Este assembler codifica as instruções propostas no ISA da arquitetura RISC hipotética apresentada na disciplina de ELTD05/ELTD15.
Utilize o guia do trabalho em que a arquitetura e o ISA são apresentados.
O objetivo deste assembler é facilitar a codificação e a execução das instruções da arquitetura RISC definida para o curso. Ele permite que os usuários escrevam código em uma linguagem de montagem simplificada, que será convertida em código binário compreensível pela máquina.
| Instruction Name | Mnemonic | Format | Encoding (10) | Meaning |
|---|---|---|---|---|
| Tamanho em Bits | - | - | 6 | 5 | 5 | 16 | - |
| Load Word | LW | I | Grupo+32 | rs | rt | offset | R[rt]=M[R[rs]+SignExtImm] |
| Store Word | SW | I | Grupo+33 | rs | rt | offset | M[R[rs]+SignExtImm]=R[rt] |
| Branch on Not Equal | BNE | I | Grupo+34 | rs | rt | offset | if(R[rs] != R[rt]) PC = PC + 4 + offset |
| Add Immediate | ADDI | I | Grupo+35 | rs | rt | offset | R[rt]=R[rs]+SignExtImm |
| Or Immediate | ORI | I | Grupo+36 | rs | rt | offset | R[rt]=R[rs] or SignExtImm |
| Instruction Name | Mnemonic | Format | Encoding (10) | Meaning |
|---|---|---|---|---|
| Tamanho em Bits | - | - | 6 | 5 | 5 | 5 | 5 | 6 | - |
| Addition | ADD | R | Grupo+10 | rs | rt | rd | 10 | 32 | R[rd]=R[rs]+R[rt] |
| Subtract | SUB | R | Grupo+10 | rs | rt | rd | 10 | 34 | R[rd]=R[rs]-R[rt] |
| Multiplication | MUL | R | Grupo+10 | rs | rt | rd | 10 | 50 | R[rd] = lowerHW_R[rs] * lowerHW_R[rt] |
| And | AND | R | Grupo+10 | rs | rt | rd | 10 | 36 | R[rd]=R[rs]&R[rt] |
| Or | OR | R | Grupo+10 | rs | rt | rd | 10 | 37 | R[rd]=R[rs]|R[rt] |
| Instruction Name | Mnemonic | Format | Encoding (10) | Meaning |
|---|---|---|---|---|
| Tamanho em Bits | - | - | 6 | 26 | - |
| Jump | JMP | J | 2 | JumpADDR | PC = JumpADDR |
| Instruction Name | Mnemonic | Format | Encoding (10) | Meaning |
|---|---|---|---|---|
| Tamanho em Bits | - | - | 32 | - |
| No Operation | - | - | 0 | No operation |
- Codificação de Instruções: Suporte para as instruções especificadas no ISA.
- Geração de Código Binário: Converte o código de montagem em formato binário.
- Documentação: Fornece exemplos e detalhes sobre como usar o assembler.
- Escreva seu código de montagem em um arquivo xxxxx.asm (O formato de codificação do assembly pode ser entendido através dos comentários nos programas .asm.
- O programa que testará a microarquitetura será o prog_avaliacao.asm. Este programa executa a seguinte funcionalidade:

- Linhas vazias ou apenas comentadas codificarão a instrução NOP em que os 32 bits da instrução são 0. Para esta instrução, tenha cuidado com os sinais de controle a serem gerados no estágio de decodificação. A instrução não pode sobrescrever dados na memória / register file. Ela deve manter o pipeline neutro.
- Execute o assembler para gerar o arquivo binário correspondente na forma: assembler input.asm grupo output.hex . O arquivo .asm deve estar tabulado corretamente, com todas as vírgulas de comentários alinhadas, caso contrário poderão ser geradas mensagens de erro ao final da compilação. Se houver qualquer erro após a compilação, não use o arquivo .hex gerado.
- Carregue o arquivo intel hex na memória de programa de sua arquitetura no momento de fazer a síntese do soft core.
Sinta-se à vontade para contribuir com melhorias e sugestões para este projeto. Para mais informações, consulte o guia do trabalho da disciplina.
Este projeto está sob a licença MIT.