AULA Nº 1

(Download da Aula)

<< anterior próxima >>
menu de aulas dúvidas
 

1.      Nível de Linguagem de Montagem (CAP. 7 - TANENBAUM)

 

 

            O nível de linguagem de montagem (linguagem assembly) difere dos outros níveis de microprogramação por ser implementado por tradução e não por interpretação.

             Os programas que fazem a tradução são chamados de TRADUTORES.

            Os programas ou hardware que executa a interpretação são chamados de INTERPRETADORES.

 

2.      TRADUÇÃO X INTERPRETAÇÃO

 

Ø      TRADUÇÃO:  Na tradução, o programa fonte não é executado diretamente. Ao invés disso, ele é convertido em programa objeto e só então executado. Na tradução, existem 2 passos distintos: (1) Geração do programa objeto; (2) Execução do programa gerado.

Note que o segundo passo não pode começar sem que o primeiro termine.

Vantagens da Tradução: Execução mais rápida! Por esse motivo,  o nível de linguagem de montagem é  implementado por tradução.

Ø      INTERPRETAÇÃO: Existe apenas um passo:   Executar o programa fonte.

Na interpretação não existe a geração de um módulo ou programa objeto.

Vantagens da Interpretação: Programas menores e mais flexíveis.

 

OBS.: Após a tradução, apenas 3 programas podem ser encontrados em memória: o microprograma, o programa objeto e o Sistema Operacional. O programa fonte já foi carregado, traduzido e já pode estar liberado da memória.

 

3.      Tradutores

 

            Os tradutores são programas que convertem o programa do usuário escrito em uma linguagem para uma outra linguagem. A linguagem na qual o programa é escrito é denominada de  linguagem fonte e a linguagem  para a qual o programa é convertido é denominada de linguagem alvo.

 

 

 

            O objetivo dos tradutores é disponibilizar o programa em uma linguagem aceita pelo processador (hardware ou um interpretador). Se estiver disponível um processador, que possa executar diretamente programas escritos na linguagem fonte, não há necessidade de traduzir o programa fonte para a linguagem alvo.

 

            A execução do programa objeto deve produzir os mesmos resultados que a execução do programa fonte daria se houvesse um processador disponível para ele. 

 

            Os tradutores podem ser  mais ou menos divididos em dois grupos, dependendo da sua relação com a linguagem fonte:

Ø      MONTADORES: Quando a linguagem fonte é essencialmente uma representação simbólica para a linguagem de máquina (ex. assembly). A linguagem fonte, nesses casos, é denominada de linguagem de montagem.

Ø      COMPILADORES: Quando a linguagem fonte é uma linguagem orientada para problemas, como o Pascal, C, etc.

 

OBS.: As duas classes de tradutores  podem gerar linguagem numérica de máquina. O compilador pode gerar tanto linguagem numérica de máquina quanto linguagem simbólica, dependendo da implementação do mesmo.

 

 

4.      MONTADORES

 

Um programa em linguagem assembly é preparado para execução  em 3  etapas: montagem, ligação e carregamento (veja a figura abaixo).

Ø      MONTAGEM: um programa chamado montador (assembler) traduz o programa descrito na linguagem simbólica (assembly) para o código binário do processador onde o programa deverá ser executado. Este código binário é denominado módulo objeto, e além do código de máquina contém também informação simbólica.

Ø      LIGAÇÃO: Quando o programa está dividido em mais de um módulo (isto é, o programa assembly completo está em diversos arquivos), a etapa de ligação é necessária. Esta segunda etapa é executada pelo programa ligador, que conecta os distintos módulos objetos gerados em um único módulo para execução. O resultado desta fase é um módulo de carregamento, que contém o código de máquina combinado e informação de relocação.

Ø      CARREGAMENTO: Finalmente, o programa carregador aloca o módulo de carregamento à memória primária do computador, onde o programa pode ser executado, e inicia a sua execução.

 

Um montador é um programa cujos dados de entrada são seqüências de caracteres que constituem o programa assembly (código fonte) e cujo resultado é um conjunto de palavras de máquina (bits) (código objeto). Montadores traduzem os programas em assembly para um ou mais segmentos[1] de código objeto em linguagem de máquina.

O  principal papel do montador é traduzir automaticamente os códigos em linguagem simbólica para códigos de máquina, em formato binário. As instruções de máquina são compostas basicamente de três campos:

Ø      campo de código de operação;

Ø      campo de modo de endereçamento; e

Ø      campo de endereços/operandos.



[1] Consideramos como um segmento um conjunto de instruções que ocupa sempre um espaço contíguo na memória principal. O seu endereço de início é denominado origem do segmento.