next up previous contents
Next: Formato do módulo objeto Up: Montagem Previous: Processamento de macro-instruções   Sumário

Criação da tabela de símbolos

Criado o código assembly contendo apenas instruções de processador e pseudo-instruções, o passo seguinte é analisar as referências simbólicas contidas no código de forma a permitir a criação do módulo objeto. Nessa etapa do processamento, a atividade principal é a criação da Tabela de Símbolos do montador.

Na sua forma mais simples, a tabela de símbolos tem como chaves as strings com os nomes simbólicos definidos no programa assembly. Símbolos podem ser definidos como resultado de duas situações:

  1. Como um rótulo em uma pseudo-instrução EQU; neste caso, o valor do símbolo está definido no campo do operando.
  2. Como um rótulo em uma outra instrução; neste caso, o valor do símbolo está relacionado à posição de memória dentro do segmento onde ocorre a definição do símbolo.

Para poder criar a tabela de símbolos, o montador deve obter a informação sobre o espaço ocupado pelo código de máquina gerado para cada instrução do processador ou pseudo-instrução que tenha impacto na alocação de memória. Para tanto, o montador faz uso de duas estruturas auxiliares, a tabela de instruções de máquina e a tabela de pseudo-instruções.

A Tabela de Instruções da Máquina (ou MOT, de machine operations table) contém toda a informação necessária para permitir a tradução de um mnemônico para o código de máquina correspondente. A chave dessa tabela é o código de operação da instrução. Os valores incluem as regras para a geração do código de máquina e o espaço de memória que será ocupado pela instrução, em bytes. O conteúdo dessa tabela é determinado pelo processador para o qual o código está sendo gerado.

A Tabela de Pseudo-Instruções (ou POT, de pseudo-operations table) tem seu conteúdo definido pelos projetistas do montador. Assim como a MOT, é uma tabela com conteúdo exclusivamente para consulta, não sendo modificado durante a execução do programa. Tem como um dos valores as regras para obter o espaço de memória que deve ser alocado em função da pseudo-instrução. Enquanto muitas das pseudo-instruções, tais como EQU ou END, não têm impacto sobre a ocupação de memória, DS e DC têm como efeito a necessidade de reservar e/ou modificar o conteúdo de posições de memória associadas ao programa. Assim, tais pseudo-instruções deverão gerar informação que irá fazer parte do módulo de carregamento gerado pelo montador.

A partir da informação derivada das tabelas do montador é possível saber quanto espaço de memória cada linha de instrução do programa fonte irá ocupar no módulo de carregamento gerado. Será a partir dessa informação que o montador poderá definir qual a posição a ser alocada para cada instrução do programa. Esta informação será mantida em uma variável contador de localização (LC, de location counter). Essa informação é transiente, ou seja, ela apenas existe durante a execução do montador.


next up previous contents
Next: Formato do módulo objeto Up: Montagem Previous: Processamento de macro-instruções   Sumário
Ivan L. M. Ricarte 2003-02-14