next up previous contents
Next: Montagem e carregamento assemble Up: Montadores em dois passos Previous: Primeiro passo   Sumário


Segundo passo

Uma vez que todos os símbolos que podem vir a ser usados como operandos das instruções no código-fonte já foram avaliados no primeiro passo do montador, é possível concluir a montagem. A atividade do montador no segundo passo é a geração do código de máquina.

A estrutura básica do segundo passo do montador é similar àquela do primeiro passo. O procedimento deve ler todas as instruções do programa fonte e, para cada linha, gerar o código de máquina correspondente. No processamento de operandos de cada instrução pode ser necessário realizar consultas à Tabela de Símbolos para obter os valores dos operandos simbólicos.

O procedimento preciso para o segundo passo do montador depende do tipo de carregador associado. Nesta seção será apresentada uma estrutura genérica desse algoritmo (Algoritmo 4.2) para descrever as tarefas realizadas nesse passo; detalhes adicionais serão apresentados na seqüência, quando forem apresentadas algumas opções de carregamento.


\begin{Program}
% latex2html id marker 3251
[htb]
\begin{algorithm}{assembler2}...
...{SWITCH} \end{WHILE} \end{algorithm} \caption{Passo 2 do montador.}\end{Program}

Nesse procedimento são introduzidas novas rotinas auxiliares de processamento das instruções. A rotina GENERATEMACHINECODE produz o código de máquina associado ao código de operação da instrução e aos seus operandos. Tipicamente, na entrada da tabela correspondente à instrução sendo processada há uma referência para uma função que é capaz de realizar esse processamento. Por exemplo, o ``código'' gerado para a pseudo-instrução DS pode ser simplesmente uma seqüência de zeros no tamanho reservado pela instrução. Para a pseudo-instrução DC, o código gerado deve corresponder ao processamento dos literais e símbolos do operando. Para qualquer instrução assembly, essa rotina utiliza informação da MOT e o processamento dos literais e símbolos do operando para gerar o código de máquina correspondente.

Outra rotina auxiliar é ASSEMBLEMACHINECODE, que posiciona esse código gerado no módulo de carregamento. ASSEMBLECLOSINGCODE tem a função de fechar o módulo de carregamento, podendo adicionalmente realizar outras tarefas associadas ao encerramento do processo de montagem.


next up previous contents
Next: Montagem e carregamento assemble Up: Montadores em dois passos Previous: Primeiro passo   Sumário
Ivan L. M. Ricarte 2003-02-14