N - PowerPoint PPT Presentation

1 / 41
About This Presentation
Title:

N

Description:

N vel de Linguagem de Montagem (Assembly) Alexandre Duarte Montagem em duas passagens Segunda passagem: Gera o do programa objeto para o Linker Resolu o de ... – PowerPoint PPT presentation

Number of Views:53
Avg rating:3.0/5.0
Slides: 42
Provided by: Alexan132
Category:
Tags: macros

less

Transcript and Presenter's Notes

Title: N


1
Nível de Linguagem de Montagem (Assembly)
Alexandre Duarte
2
Linguagem de montagem (Assembly)
  • Abstração simbólica da linguagem de máquina
  • Traduzida pelo programa assembler
  • Mapeada diretamente em instruções de máquina
  • Pseudo-instruções e macros auxiliares
  • Símbolos e rótulos simplificam endereçamento

3
Características
  • Linguagem assembly pura
  • Cada comando corresponde a uma instrução de
    máquina
  • Uso de nomes e endereços simbólicos
  • Instruções mnemônicas ADD, SUB ...
  • Acesso a todas as características do HW alvo
  • Tudo que pode ser feito na máquina pode ser feito
    em assembly
  • Restrita à família de processadores alvo

4
Por que Assembly?
  • Programar em assembly é difícil
  • Demora mais para escrever um programa
  • Depuração e manutenção complicadas
  • Duas razões
  • Desempenho
  • Acesso ao HW

5
Desempenho
  • Em termos de tamanho
  • Crítico para sistemas embutidos
  • Em termos de velocidade
  • Implementar partes críticas em assembly

6
Acesso
  • Algumas tarefas exigem acesso direto ao HW
  • Tratamento de interrupções de hardware
  • Controladores de dispositivos
  • Sistemas modernos (Linux)
  • Acesso às funções do processador para troca de
    contexto
  • Boot

7
Motivações reavaliadas
  • Desempenho
  • Hardware está ficando muito complicado
  • Em alguns casos é difícil o controle manual
  • Compiladores atuais são muito eficientes
  • Geram código de boa qualidade
  • Homem x máquina
  • Acesso motivo mais importante
  • Mesmo assim, apenas em casos extremos
  • Uma linguagem como C dá bom acesso

8
Uma terceira motivação
  • Estudo de arquiteturas
  • Assembly está diretamente relacionado ao hardware
  • Permite entender como a máquina realmente
    trabalha do ponto de vista do hardware

9
Formato das Instruções
  • Está diretamente associado ao hardware
  • Porém, possuem características comuns
  • Instruções Assembly
  • Representam os comandos da máquina
  • Usualmente, quatro campos
  • Label, operação, operandos, comentários
  • Pseudo-instruções
  • Usadas para reservar espaço para dados
  • Apenas tipos básicos

10
(No Transcript)
11
Campo de label
  • Usado para atribuir um nome simbólico para uma
    variável ou endereço
  • Campo opcional
  • Formato
  • Posição fixa ou separador
  • Tamanho fixo ou variável
  • Nomes de registradores
  • Declarações implícitas do assembler

12
Campo de operação
  • Representações simbólicas das instruções do
    hardware
  • Critério de quem fez o montador
  • Intel MOV
  • Motorola MOVE
  • Sun ST e LD
  • Variantes em função do tamanho do dado
  • P. Ex Intel movl

13
Campo de operandos
  • Especifica os alvos das operações
  • Endereços
  • Instruções de desvio
  • Variáveis
  • Posição de memória sendo acessada
  • Constantes
  • Valores para operações aritméticas
  • Registradores
  • Variáveis locais do processador

14
Campo de comentário
  • Usado para acrescentar informações relevantes ao
    programa
  • Facilitar a compreensão do mesmo
  • Programa assembly é praticamente incompreensível
    sem comentários
  • Formato geral
  • Indicador de início ()
  • Até o final da linha

15
Pseudo-instruções
  • Comandos para o montador, não instruções
  • Relacionadas com o modo de operação da
    arquitetura e do montador
  • Alocação de variáveis
  • Criação de macros e subrotinas
  • Definição de escopo
  • Definição de segmentos
  • Contantes

16
Definição de Macro
  • Bloco de código de uso repetitivo
  • Ao invés de realmente reescrevê-lo define-se a
    macro
  • Identifica as instruções a serem repetidas
  • Código é expandido em cada ocorrência

17
Chamada e expansão
  • É necessário
  • Cabeçalho com o nome da macro
  • Bloco de instruções
  • Pseudo-instrução indicando o término
  • O montador salva a macro em uma tabela e quando
    esta é chamada, substitui a chamada pelo código

18
(No Transcript)
19
Chamada e expansão
  • A expansão ocorre durante o processo de montagem
    e não durante a execução do programa
  • O código gerado pelo exemplo (a) é o mesmo do
    gerado pelo exemplo (b)
  • Assembler efetuado em 2 passos
  • As definições de macros são salvas e todas as
    operações são realizadas
  • Código é processado como se fosse o original

20
(No Transcript)
21
Subrotina
  • É uma chamada a procedimento
  • Onde houver uma chamada, o procedimento é
    invocado separadamente e ao seu término, retorna
    para o programa que originou esta chamada
  • Ocorre um desvio no código

22
(No Transcript)
23
Tradução completa
  • Constituída de duas fases
  • Montagem dos procedimentos a partir dos arquivos
    com código em assembly
  • Ligação dos módulos
  • Ao final, teremos um programa binário executável

24
(No Transcript)
25
(No Transcript)
26
Montagem em duas passagens
  • Tradução imediata nem sempre é possível
  • Problema de referência posterior/à frente
  • Primeira passagem
  • Contagem do espaço ocupado por cada instrução
  • Construção de tabela de símbolos (labels)

27
Montagem em duas passagens
  • Segunda passagem
  • Geração do programa objeto para o Linker
  • Resolução de símbolos e referências

28
Montagem em duas passagens
  • Duas alternativas
  • Alternativa 1
  • Armazenar as referências em uma tabela
  • Traduzir o programa
  • Solução simples
  • Alternativa 2
  • Gerar código intermediário
  • Editar referências desconhecidas
  • Poder ser mais eficiente

29
Passo 1
  • Contabiliza espaço para instruções
  • ILC Instruction Location Counter
  • Incrementado do tamanho de cada instrução
    traduzida
  • Memoriza localização dos símbolos encontrados
    durante o processo

30
Tabela de símbolos
  • Criada no passo 1 para utilização no passo 2
  • Informações coletadas sobre símbolos
  • Tamanho do campo
  • Informação de relocação
  • Regras de escopo
  • Várias maneiras de organizar a tabela
  • Memória associativa para (símbolo, valor)
  • Forma mais simples vetor de registros
  • Forma mais eficiente tabela hash

31
(No Transcript)
32
Passo 2
  • Tradução propriamente dita do programa
  • Informação extra para o carregador
  • Leitura seqüencial do código
  • Acesso às tabelas
  • De instruções
  • De símbolos
  • Tratamentos de erros
  • Símbolos desconhecidos

33
(No Transcript)
34
(No Transcript)
35
(No Transcript)
36
Linker
  • Funções
  • Ligação une os procedimentos e resolve as
    referências entre os módulos
  • Alocação separa espaço na memória para o
    programa
  • Relocação ajusta os endereços que dependem da
    posição do programa na memória

37
(No Transcript)
38
Tarefas do linker
  • Colocação de todos os módulos na memória
  • Contabilização dos espaços ocupados
  • Determinação dos endereços exportados
  • Verificação de referências externas
  • Alteração de endereços em cada módulos

39
(No Transcript)
40
(No Transcript)
41
(No Transcript)
Write a Comment
User Comments (0)
About PowerShow.com