1 / 22

Arquitetura de Computadores

Arquitetura de Computadores. Ricardo de Sousa Britto Nível da Linguagem de Montagem. 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

Download Presentation

Arquitetura de Computadores

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Arquitetura de Computadores • Ricardo de Sousa Britto • Nível da Linguagem de Montagem

  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)

  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

  4. Desvantagens • Maior complexidade de programação • Custo maior de desenvolvimento • Código não portável

  5. Formato de um comando em Assembly

  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.

  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

  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.

  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

  10. Formato de uma entrada da TS

  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.

  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

  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.

  14. Ligação e Carga

  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)

  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

  17. Módulos objeto

  18. Módulo de carga

  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

  20. Estrutura de um módulo objeto

  21. Tabela de módulos objeto

  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.

More Related