Alunos:
- João Lucas Azevedo Yamin Rodrigues da Cunha - 17/0013731
- Thiago Luis Rodrigues Pinho - 15/0065205
Este trabalho foi desenvolvido com C++ utilizando-se dois sistemas operacionais diferentes: tanto no Ubuntu quanto no Linux Subsystem do Windows.
Este trabalho foi feito orientado a testes ao final desse documento há uma explicação de como rodar os testes.
- Leitura
- Receber e abrir o arquivo
- Contador de endereços/posição
- Parser
- Detecção das áreas de texto e data
- Detecção das linhas
- Detecção das instruções
- Detecção dos argumentos das instruções
- Detecção de rótulos (com ou sem enter após)
- Tabelas
- Tabela de Instruções para consulta
- Montagem da tabela de símbolos
- Detecção de Erros
- Detecção de erros léxicos
- Detecção de erros sintáticos
- Detecção de erros semânticos
- Exibição das linhas e classificação dos erros
- Código de Máquina
- Adicionar o opcode
- Resolver as pendências dos endereços da Tabela de Símbolos
- Arquivos de Saída
- Geração do arquivo pré-processado (não sei se entendi do que se trata)
- Geração do arquivo objeto contendo o código de máquina
- Receber o programa de entrada
- Identificar as instruções de INPUT e OUTPUT, exibindo o texto pedido
- Identificar e executar as instruções
- Exibir o conteúdo do acumulador ao executar uma instrução
- Exibir o endereço e conteúdo de endereços modificados pela instrução
Depois de extrair ou clonar o repositório, entre na pasta principal e digite em seu terminal: Para compilar o montador:
make montador
Para compilar o simulador
make simulador
Após isso, você pode executar o montador ou o simulador usando o comando
./montador bin.asm
./simulador bin.obj
Para qualquer outro arquivo .asm dentro da pasta entradas_asm, basta digitar seu nome com a extensão. Também é possível especificar qual pasta você gostaria de buscar o arquivo a ser aberto.
./montador bin.asm ./entradas_asm/
./simulador bin.obj ./saidas/
Na pasta principal: Para compilar todos os testes, basta digitar:
make all_tester
Se você quiser ver os testes antes de executá-los:
./all_tester --list-tests
Ou pode somente rodar os testes:
./all_tester
make clean