![Page 1: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc111497959413d8c6040/html5/thumbnails/1.jpg)
1
Arquitetura de Computadores
Ricardo de Sousa Britto Nível da Linguagem de Montagem
![Page 2: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc111497959413d8c6040/html5/thumbnails/2.jpg)
2
Introdução
Tradução: Converte um programa fonte em um programa objeto
Duas etapas: Geração de programa em linguagem alvo; Execução do programa.
Dois tipos: Compilador e Montador Compilador: Linguagem fonte = Alto nível Montador: Linguagem fonte = representação
simbólica da linguagem de montagem (Assembly)
![Page 3: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc111497959413d8c6040/html5/thumbnails/3.jpg)
3
Vantagens
Código mais eficiente Algumas máquinas podem não ter um
compilador Acesso direto aos recursos de nível ISA Uma linha de programa = Uma linha de
programa objeto
![Page 4: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc111497959413d8c6040/html5/thumbnails/4.jpg)
4
Desvantagens
Maior complexidade de programação Custo maior de desenvolvimento Código não portável
![Page 5: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc111497959413d8c6040/html5/thumbnails/5.jpg)
5
Formato de um comando em Assembly
![Page 6: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc111497959413d8c6040/html5/thumbnails/6.jpg)
6
Campos de uma instrução Assembly
Label: Nome simbólico atribuído a um endereço.
Operação: Abreviação simbólica do OPCODE. Ex: ADD = soma.
Operando: especifica simbolicamente os endereços, registradores ou constantes.
Comentários: Documenta o programa. Ignorado pelo montador.
![Page 7: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc111497959413d8c6040/html5/thumbnails/7.jpg)
7
Processo de montagem
Montagem: tradução de programa fonte em programa objeto.
Problema da referência futura: Desvios para posições representadas por símbolos ainda indefinidos
Solução: Tradução em Dois passos
![Page 8: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc111497959413d8c6040/html5/thumbnails/8.jpg)
8
Passo 1
Analisa-se as instruções, até encontrar uma pseudo-instrução END.
Usando uma tabela de códigos de operação, o montador constrói uma tabela de símbolos.
Tabela de símbolos é utilizada no Passo 2 da montagem.
![Page 9: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc111497959413d8c6040/html5/thumbnails/9.jpg)
9
Tabela de Símbolos
O contador de localização de instrução (ILC), zerado no início do passo 1, é incrementado do comprimento da instrução corrente.
O ILC provê o endereço de execução da instrução montada.
A tabela de símbolos é com base no ILC
![Page 10: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc111497959413d8c6040/html5/thumbnails/10.jpg)
10
Formato de uma entrada da TS
![Page 11: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc111497959413d8c6040/html5/thumbnails/11.jpg)
11
Passo 2
Gera o programa objeto. Produz a expansão binária da instrução a partir das tabelas.
Produz informações necessárias ao procedimento de ligação.
Gera mensagens de erro caso estes existam no programa fonte.
![Page 12: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc111497959413d8c6040/html5/thumbnails/12.jpg)
12
Ligação e Carga
Programas podem ser constituídos de vários procedimentos.
Todos os procedimentos devem ser ligados em um único programa a ser executado.
O software que faz a ligação dos procedimentos é chamado de ligador.
É produzido um único programa, o Módulo Absoluto de carga, a partir de vários módulos objetos
![Page 13: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc111497959413d8c6040/html5/thumbnails/13.jpg)
13
Ligação e Carga
Módulos objetos são obtidos a partir da tradução dos vários procedimentos.
Um software denominado carregador carrega o Módulo de carga na memória principal para posterior execução.
![Page 14: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc111497959413d8c6040/html5/thumbnails/14.jpg)
14
Ligação e Carga
![Page 15: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc111497959413d8c6040/html5/thumbnails/15.jpg)
15
Ligação e Carga
O ligador une todos os modelos objetos em um único espaço de endereçamento.
As referências a endereços devem ser atualizadas (Problema de realocação)
Quando um procedimento A chama um B, o endereço absoluto de B só conhecido após a ligação (Problema da referência externa)
![Page 16: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc111497959413d8c6040/html5/thumbnails/16.jpg)
16
Tarefas do Ligador
Construir uma tabela com todos os módulos objeto e seus respectivos comprimentos.
Atribuir um endereço de carga. Adicionar uma constante de relocação ao
endereço inicial de cada módulo. Encontrar todas as instruções que
referenciam outros procedimentos e inserir nelas endereço absoluto dos mesmo
![Page 17: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc111497959413d8c6040/html5/thumbnails/17.jpg)
17
Módulos objeto
![Page 18: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc111497959413d8c6040/html5/thumbnails/18.jpg)
18
Módulo de carga
![Page 19: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc111497959413d8c6040/html5/thumbnails/19.jpg)
19
Funcionamento do Ligador
A maioria dos ligadores requer 2 passos:– Ler todos os módulos objeto, construir uma tabela
de nomes e comprimentos de módulos e uma tabela global de símbolos internos e externos
– Ler os módulos objeto, relocá-los e ligá-los para formar um único módulo
![Page 20: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc111497959413d8c6040/html5/thumbnails/20.jpg)
20
Estrutura de um módulo objeto
![Page 21: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc111497959413d8c6040/html5/thumbnails/21.jpg)
21
Tabela de módulos objeto
Módulo Comprimento Endereço
A 400 100
B 600 500
C 500 1100
D 300 1600
![Page 22: 1 Arquitetura de Computadores Ricardo de Sousa Britto Nível da Linguagem de Montagem](https://reader036.vdocuments.pub/reader036/viewer/2022062307/552fc111497959413d8c6040/html5/thumbnails/22.jpg)
22
Ligação Dinâmica
Ligação de procedimentos compilados separadamente no momento em que esses são chamados pela primeira vez.
Procedimentos raramente utilizados são ligados só se necessários.
Melhor aproveitamento da memória virtual.