220 likes | 308 Views
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
E N D
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 • Compilador: Linguagem fonte = Alto nível • Montador: Linguagem fonte = representação simbólica da linguagem de montagem (Assembly)
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
Desvantagens • Maior complexidade de programação • Custo maior de desenvolvimento • Código não portável
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.
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
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.
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
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.
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
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.
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)
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
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
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.