https://github.com/taffarel55/risc-v
Repositório com intuito de reunir lista com as instruções mais básicas para risc-v para inteiros 32 bits e alguns exemplos úteis.
https://github.com/taffarel55/risc-v
arquitetura-de-computadores assembly risc-v risc-v-assembly
Last synced: 16 days ago
JSON representation
Repositório com intuito de reunir lista com as instruções mais básicas para risc-v para inteiros 32 bits e alguns exemplos úteis.
- Host: GitHub
- URL: https://github.com/taffarel55/risc-v
- Owner: taffarel55
- License: gpl-3.0
- Created: 2021-04-24T17:51:09.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2021-04-24T23:19:28.000Z (about 5 years ago)
- Last Synced: 2025-02-26T10:45:39.866Z (over 1 year ago)
- Topics: arquitetura-de-computadores, assembly, risc-v, risc-v-assembly
- Language: Assembly
- Homepage:
- Size: 31.3 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Risc-v: Lista de instruções com exemplos
Repositório com intuito de reunir lista com as instruções mais básicas para risc-v para inteiros 32 bits e alguns exemplos úteis.
## Lista de instruções básicas:
| Função | Tipo | Comando |
|:----------:|:-------------------:|:-------------------:|
| Load | Byte | `LB rd, rs1, imm` |
| Load | Halfword | `LH rd, rs1, imm` |
| Load | Word | `LW rd, rs1, imm` |
| Load | Byte Unsigned | `LBU rd, rs1, imm` |
| Load | Half Unsigned | `LHU rd, rs1, imm` |
| Stores | Byte | `SB rs1, rs2, imm` |
| Stores | Halfword | `SH rs1, rs2, imm` |
| Stores | Word | `SW rs1, rs2, imm` |
| Shift | Left | `SLL rd,rs1,rs2` |
| Shift | Left Immediate | `SLLI rd,rs1,shamt` |
| Shift | Right | `SRL rd,rs1,rs2` |
| Shift | Right Immediate | `SRLI rd,rs1,shamt` |
| Shift | Right Arithmetic | `SRA rd,rs1,rs2` |
| Shift | Right Arith Imm | `SRAI rd,rs1,shamt` |
| Arithmetic | ADD | `ADD rd,rs1,rs2` |
| Arithmetic | ADD Immediate | `ADDI rd,rs1,im` |
| Arithmetic | SUBtract | `SUB rd,rs1,rs2` |
| Arithmetic | Load Upper Imm | `LUI rd,imm` |
| Arithmetic | Add Upper Imm to PC | `LUI rd,imm` |
| Logical | XOR | `XOR rd,rs1,rs2` |
| Logical | XOR Immediate | `XORI rd,rs1,imm` |
| Logical | OR | `OR rd,rs1,rs2` |
| Logical | OR Immediate | `ORI rd,rs1,imm` |
| Logical | AND | `AND rd,rs1,rs2` |
| Logical | AND Immediate | `ANDI rd,rs1,imm` |
| Compare | Set < | `SLT rd,rs1,rs2` |
| Compare | Set < Immediate | `SLTI rd,rs1,imm` |
| Compare | Set < Unsigned | `SLTU rd,rs1,rs2` |
| Compare | Set < Imm Unsigned | `SLTIU rd,rs1,imm` |`
| Branches | = | `BEQ rs1,rs2,imm` |
| Branches | ≠ | `BNE rs1,rs2,imm` |
| Branches | < | `BLT rs1,rs2,imm` |
| Branches | ≥ | `BGE rs1,rs2,imm` |
| Branches | < Unsigned | `BLTU rs1,rs2,imm` |
| Branches | ≥ Unsigned | `BGU rs1,rs2,imm` |
| Jump & Link | J&L | `JAL rd,imm` |
| Jump & Link | J&L Register | `JALR rd,rs1,imm` |
## Exemplos
1. basic arithmetic
- [add_sub.s](https://github.com/taffarel55/risc-v/blob/main/1.%20basic%20arithmetic/add_sub.s) - Mostrando como somar ou subtrair números
2. data transfer
- [load.s](https://github.com/taffarel55/risc-v/blob/main/2.%20data%20transfer/load.s) - Como realizar as operações LB, LH E LW
- [store.s](https://github.com/taffarel55/risc-v/blob/main/2.%20data%20transfer/store.s) - Como realizar as operações SB, SH E SW
3. control flow
- [beq.s](https://github.com/taffarel55/risc-v/blob/main/3.%20control%20flow/beq.s) - Exemplo do uso de BEQ para fazer `if else`
- [bne.s](https://github.com/taffarel55/risc-v/blob/main/3.%20control%20flow/bne.s) - Exemplo do uso de BNE para fazer `if else`
- [loop.s](https://github.com/taffarel55/risc-v/blob/main/3.%20control%20flow/loop.s) - Exemplo de um loop `do while`, `for` ou `while`
- examples
- [fat.s](https://github.com/taffarel55/risc-v/blob/main/examples/fat.s) - Implementação de de um programa que calcula o fatorial
- [vetor.s](https://github.com/taffarel55/risc-v/blob/main/examples/vetor.s) - Uso de ponteiros para trabalhar com vetores
## Contribuindo
Pull requests são sempre bem vindos, posso ter esquecido de alguma coisa, ou me passado em algo. Se for uma mudança grande, abre uma Issue antes pra gente discutir as mudanças. Se quiser adicionar um exemplo, sinta-se a vontade! Obrigado! :heart_eyes:
## Licença
[GNU General Public License v3.0](LICENSE)