CPU de 8 bits com ISA própria de 16 instruções, escrita em Verilog, e o assembler
correspondente em C++. O assembler traduz .asm para o código de máquina que o
processador executa em simulação. Projeto da disciplina de Microprocessadores
(UFC), em equipe de quatro.
cd compiler && make
./compiler ../examples/feature_showcase.asm ../src/file.bin
Depois, simular src/tb/processor_8bit_tb.v em Icarus Verilog, ModelSim ou EDA
Playground — o testbench espera o programa montado em src/file.bin.
Von Neumann: unidade de controle com a máquina de estados de busca–decodificação–execução, e datapath de 8 bits com a ULA, três registradores de uso geral (A, B, C) e registrador de flags.
| Classe | Instruções |
|---|---|
| Aritmética | ADD SUB MUL DIV MOD INC DEC |
| Lógica | AND OR NOT XOR NAND NOR XNOR |
| Comparação | COMP |
| Fluxo | JMP HALT |
O assembler remove comentários (;), valida mnemônico e número de argumentos, e
reporta erro de linha para comando desconhecido ou aridade errada.
JMPé incondicional: as flags doCOMPainda não alimentam desvio condicional — é a principal extensão pendente, junto com pilha eCALL/RET.- Opcodes de 1 argumento e de 2 argumentos ocupam faixas distintas do byte de
instrução (tabela completa em
compiler/compiler.cpp).
src/rtl/ alu, datapath, control_unit, data_memory, processor_top
src/tb/ testbench e módulo de debug com sinais internos expostos
compiler/ assembler em C++, com Makefile
examples/ programa de demonstração (.asm e .bin)
docs/images/ diagramas de organização e de blocos
Alisson Jaime Sales Barros, José Ferreira Lessa, Matheus Rocha Gomes da Silva e Thiago Siqueira de Sousa.
