Você está na página 1de 36

Nivel de Linguagem de Montagem (Assembly)

Orlando Loques setembro 2006

Referncias: Structured Computer Organization (captulo 7), A.S. Tanenbaum, (c) 2006 Pearson Education Inc Computer Organization and Architecture, W. Stallings, Prentice Hall

Motivao (i)
Traduo X interpretao; Java usa dois nveis:
O compilador traduz Java para bytecode A mquina virtual interpreta o bytecode

Tradutores:
Compilador: Java, C, Fortran Montador/Assembler representao simblica da linguagem da mquina; inclui instrues e endereos; cada instruo corresponde exatamente a uma instruo do nvel ISA

Resultado da Traduo da Linguagem de Montagem:


Programa Objeto / Programa Binrio Executvel

Motivao (ii)
Programar em Assembler mais difcil e toma mais tempo que usando linguagem de alto-nvel Por qu usar Assembler ?
Desempenho
Expert pode produzir cdigo mais rpido e menor; essencial em aplicaes embutidas, etc, eg Smartcards

Acesso a detalhes
Interrupo, trap handlers, E/S; gerenciamento de memria virtual

Motivao (iii)
Comparao de linguagem de montagem e linguagem de alto nvel, considerando um ajuste fino (tuning)

Motivao (iv)
1. O sucesso do projeto pode depender do desempenho 2. Algumas aplicaes tm limitaes de memria 3. Acesso a detalhes de baixo nvel 4. Projeto de compiladores 5. Estudo de arquitetura de computadores 6. Etc

Formatos de Comandos (i)

Computao de N = I + J - Pentium 4 Formato - MASM (microsoft macro assembler)

Campos:
Rtulo / Label: representam posies/endereos na memria Opcode Operandos Comentrios

Formatos de Comandos (ii)

Computao de N = I + J - Motorola 680x0.

Formatos de Comandos (iii)


Computao de N = I + J - SPARC.

Pseudo-Instrues (i)
Some of the pseudoinstructions available in the Pentium 4 assembler (MASM).

Pseudo-instrues (comandos para o prprio assembler) disponveis no assembler do Pentium 4 (MASM)

Pseudo-Instrues (ii)
Pseudo-instrues disponveis no assembler do Pentium 4 (MASM)

* *

Pseudo-Instrues (iii)
BASE EQU 1000; o nome BASE pode ser usado em todo lugar ao invs de 1000 LIMIT EQU 4*BASE + 2000; pode ser definido atravs de expresses DB, DW, DD, DQ alocam memria para variveis
TABLE DB 11, 23, 49 nomeia e inicializa 3 bytes

Definio de Macro, Chamada e Expanso (i)


Representam trechos de cdigo que tm que ser repetidos dentro do programa Codigo para intercambiar P e Q duas vezes

definio da macro (a) sem macro (b) com macro

Definio de Macro, Chamada e Expanso (i)

Comparao de chamadas macros com chamadas de procedimentos

Macros com Parmetros

(a) sem macro

(b) com macro

Montagem Condicional
M1 M2 MACRO IF WORDSIZE GT 16 MACRO

ENDM ELSE M2 MACRO

ENDM ENDIF ENDM

Assemblers de dois Passos (i)


Quais so os endereos usados nos labels (desvios e referncias)?
Forward reference problem

No primeiro passo os smbolos so coletados na Tabela de Smbolos; as macros tambm so expandidas, trs tabelas so usadas:
Tabela de smbolos Tabela de Cdigos de Operao Tabela de Pseudo-instrues

Assemblers de dois Passos (i)

Instruction location counter (ILC): mantm o controle dos endereos onde as instrues sero carregadas na memria. Neste exemplo, os comandos antes de MARIA ocupam 100 bytes.

Assemblers de dois Passos (ii)


Tabela de Smbolos para o programa anterior
Campo Outras Informaes:
Tamanho do dado associado ao campo Visibilidade do simbolo Bits de realocao se necessrio

Assemblers de dois Passos (iii)


Tabela de cdigos de operao (parcial) de um montador para o Pentium 4

A classe da instruo define a traduo da instruo, cada classe sendo associada a procedimentos especficos de traduo do montador

Passo I (i)

...

Passo I (ii)
... Pass one of a simple assembler.

...

Passo I (iii)
...

Passo II (i)

...

Passo II (i)
Gerao do programa objeto e da listagem Gerao de informao para o Linker
Usado na composio de programas a partir de mdulos

Identificao de Erros

Passo II (ii)
...

Tabela de Simbolos - Codificao Hash


(a)smbolos, valores e cdigos de hash derivados dos smbolos (b) tabela hash, com lista

Ligao e Carregamento

(Linking and Loading)

A gerao de um programa binrio executvel, a partir de um conjunto de programas traduzidos independentemente, requer o uso de um ligador (loader)

Tarefas realizadas pelo Linker (i)


Cada mdulo tem o seu espao de endereamento prprio comeando no endereo 0

Tarefas realizadas pelo Linker (ii)

Endereo inicial de montagem = 100 Mdulos objetos aps posicionados na imagem binria Binrio executvel: Mdulos objetos depois da ligao e realocao, considerando a base 100
Mdulo Tamanho Endereo Inicial

A B C
+ 100

400 600 500 300

100 500 1100 1600

Estrutura de um Mdulo Objeto


Estrutura interna de Mdulo Objeto produzida pelo tradutor
Identificao: nome, tamanho das diversas partes do mdulo Entry point table: smbolos que podem ser referenciados externamente External reference table: smbolos referenciados em outros mdulos Cdigo e constantes Relocation Dictionary: especifica os endereos que tem que ser realocados; tabela ou bit map End of module: check sum, endereo de incio do programa

Instante de Ligao e Relocao Dinmica


O programa realocado anteriormente movido 300 endereos acima Diversas instrues usam referncias a endereos incorretos A ligao dinmica ajuda a resolver o problema

Instante de Ligao
Quando o programa escrito Quando o programa traduzido Quando o programa ligado, mas antes de ser carregado Quando o programa carregado Quando um registro de base usado para endereamento carregado Quando a instruo contendo o endereo carregada

Ligao Dinmica no MULTICS (i)

Antes da chamada a EARTH


Os endereos esto indefinidos

Ligao Dinmica no MULTICS (ii)

Depois da chamada e ligao de EARTH


O endereo atualizado na tabela

Ligao Dinmica no Windows

Uso de uma DLL por dois processos DLL: Dynamic Link Library
uma coleo de procedimentos que pode ser carregada na memria Servem para definir interfaces de mdulos: jogos, bibliotecas, drives, etc

Você também pode gostar