Montador
Expansor de Macros
Pedro Matos Castanha
1
Departamento de Ciência da Computação – Universidade Federal de Minas Gerais (UFMG) pedrocastanha@gmail.com Resumo. Este relatório descreve a implementação do expansor de macros para a máquina básica utilizada ao longo de todo o curso.
1. Introdução
Neste trabalho foi implementado um expansor de macros para uma máquina virtual. Para a criação da mesma foi utilizada a linguagem de programação C.
2. Código Fonte
• • • • expansor.c: Arquivo contendo o método principal. macro.h: Define as estruturas de dados e o cabeçalho das funções do expansor. macro.c: Contem as funções utilizadas pelo expansor. Makefile: Arquivo criado para auxiliar na execução do programa.
3. Compilação
O programa pode ser compilado utilizando o makefile com o seguinte comando: make expansor 4. Execução A execução do programa tem como parâmetros: • • Nome do arquivo de entrada: informado como primeiro argumento na chamada do expansor de macros. Nome do arquivo de saída: informado como segundo argumento na chamada do programa.
Um exemplo de chamada seria da forma ./expansor teste1 saida1 Enquanto que para se executar o programa utilizando do Makefile basta chamar o comando: make run
5. Estrutura Tabela de Macros
Foi criada uma estrutura de dados ”Macro”, que é usada como Tabela de Macros. Cada posição da tabela possui os seguintes campos: • • •
nome: Armazena o nome da macro. inst: Este campo guarda o nome da instrução que está sendo referenciada. variavel: Guarda a variável pertencente a instrução.
6. Progamas Exemplo Juntamente com o código fonte foram fornecidos dois progamas de exemplo para serem usados com o expansor assim como o programa teste passado na especificação. São eles: exp, mdc e teste1. Para realizar testes utilizando estes programas basta alterar no arquivo Makefile qual argumento deve ser passado para o montador. • • exp: Imprime o resultado a^(b) de dois números passados pela