G - Assembler
Entrega |
---|
Sexta - 01/11 |
Nesse projeto iremos criar o programa assembler que é responsável por traduzir os códigos escrito em Assembly para a linguagem de máquina.
Instruções
As instruções técnicas de como começar o projeto estão no laboratório 16.
Módulos a serem implementados
O projeto no total possui 5 módulos, sendo que o módulo AssemblerZ01.java
já está pronto.
Tip 1
Os módulos estão listados de maneira Top - Down
- AssemblerZ01
- Arquivo :
AssemblerZ01.java
- Descrição : Main do projeto. Recebe como parâmetro o nome do arquivo
.nasm
e o nome do arquivo binário de máquina.hack
. a ser escrito, passa essas informações para a classe Assemble. Essa classe que inicializa a tabela de símbolo (fillSymbolTable
) e chama o métodogenerateMachineCode
para efetivamente gerar o arquivo de saída. - Dependências :
Assemble.java
- Arquivo :
Tip 2
Já está pronto, não precisa mexer.
-
Assemble
- Arquivo:
Assemble.java
- Descrição: Classe responsável por criar o código de máquina, ela que efetivamente faz a varredura do arquivo
.nasm
de entrada e escreve o arquivo.hack
de saída, gerando o código de máquina. - Dependências:
Code.java
,Parser.java
,SymbolTable.java
- Arquivo:
-
Code
- Arquivo :
Code.java
- Descrição : Traduz mnemônicos da linguagem assembly para códigos binários da arquitetura Z0.
- Dependências : none
- Arquivo :
-
Parser
- Arquivo :
Parser.java
- Descrição : Encapsula o código de leitura. Carrega as instruções na linguagem assembly, analisa, e oferece acesso as partes da instrução (campos e símbolos). Além disso, remove todos os espaços em branco e comentários.
- Dependências : none
- Arquivo :
-
SymbolTable
- Arquivo :
SymbolTable.java
- Descrição : Mantém uma tabela com a correspondência entre os rótulos simbólicos e endereços numéricos de memória.
- Dependências : none
- Arquivo :
Rubrica
Conceito | |
---|---|
I | - Menos da metade dos módulos funcionando |
D | - Teste unitário ou Teste integração não passa |
C+ | - Criado assembler a partir de estrutura de código disponibilizada |
- Todos os testes unitários passam no teste | |
B+ | - Verifica se instrução de jump é seguida de NOP, caso contrário dá erro |
A+ | - Insere automaticamente um NOP após instrução de JUMP que não é seguida de nop. |
- Imprime mensagem de alerta que isso foi feito. |