diff --git a/tests/RV32I/advanced/memory/012-jal.hex b/tests/RV32I/advanced/memory/012-jal.hex index e69de29..9451573 100644 --- a/tests/RV32I/advanced/memory/012-jal.hex +++ b/tests/RV32I/advanced/memory/012-jal.hex @@ -0,0 +1,9 @@ +00300693 +00c000ef +00500713 +02e02e23 +00a00793 +008000ef +02f02e23 +00f00813 +03002e23 diff --git a/tests/RV32I/advanced/memory/013-jalr.hex b/tests/RV32I/advanced/memory/013-jalr.hex index e69de29..5ce7c97 100644 --- a/tests/RV32I/advanced/memory/013-jalr.hex +++ b/tests/RV32I/advanced/memory/013-jalr.hex @@ -0,0 +1,10 @@ +00300693 +00d686b3 +00000897 +01488893 +000880e7 +00700713 +02e02e23 +00a00793 +00008067 +02f02e23 diff --git a/tests/RV32I/advanced/src/012-jal.s b/tests/RV32I/advanced/src/012-jal.s index 97b0bcc..cc62384 100644 --- a/tests/RV32I/advanced/src/012-jal.s +++ b/tests/RV32I/advanced/src/012-jal.s @@ -1 +1,26 @@ # jal implementation +.text + +.global _start + +_start: + addi a3, zero, 3; + + jal subrotina; + + addi a4, zero, 5; + + sw a4, 60(zero); + + +subrotina: + addi a5, zero, 10; + + jal subrotina2; + + sw a5, 60(zero); + +subrotina2: + addi a6, zero, 15; + + sw a6, 60(zero); diff --git a/tests/RV32I/advanced/src/013-jalr.s b/tests/RV32I/advanced/src/013-jalr.s index 9fdb3c5..8277bfa 100644 --- a/tests/RV32I/advanced/src/013-jalr.s +++ b/tests/RV32I/advanced/src/013-jalr.s @@ -1 +1,22 @@ # jalr implementation +.text + +.global _start + +_start: + addi a3, zero, 3; + add a3, a3, a3; + + la a7, subrotina; + + jalr ra, a7, 0; + + addi a4, zero, 7; + + sw a4, 60(zero); + +subrotina: + addi a5, zero, 10; + jalr zero, ra, 0; + + sw a5, 60(zero); diff --git a/tests/RV32I/basic/memory/000-addi.hex b/tests/RV32I/basic/memory/000-addi.hex index e69de29..4ef46a4 100644 --- a/tests/RV32I/basic/memory/000-addi.hex +++ b/tests/RV32I/basic/memory/000-addi.hex @@ -0,0 +1,5 @@ +00500593 +00000013 +00000013 +00000013 +02b02e23 diff --git a/tests/RV32I/basic/memory/001-sw.hex b/tests/RV32I/basic/memory/001-sw.hex index e69de29..a346b92 100644 --- a/tests/RV32I/basic/memory/001-sw.hex +++ b/tests/RV32I/basic/memory/001-sw.hex @@ -0,0 +1,2 @@ +00a00593 +02d02e23 diff --git a/tests/RV32I/basic/memory/002-slti.hex b/tests/RV32I/basic/memory/002-slti.hex index e69de29..bf0a4f4 100644 --- a/tests/RV32I/basic/memory/002-slti.hex +++ b/tests/RV32I/basic/memory/002-slti.hex @@ -0,0 +1,5 @@ +00400593 +0015a693 +0055a713 +02d02c23 +02e02e23 diff --git a/tests/RV32I/basic/memory/003-sltiu.hex b/tests/RV32I/basic/memory/003-sltiu.hex index e69de29..74d86cb 100644 --- a/tests/RV32I/basic/memory/003-sltiu.hex +++ b/tests/RV32I/basic/memory/003-sltiu.hex @@ -0,0 +1,3 @@ +00800593 +7ff5b613 +02c02e23 diff --git a/tests/RV32I/basic/memory/004-xori.hex b/tests/RV32I/basic/memory/004-xori.hex index e69de29..460436a 100644 --- a/tests/RV32I/basic/memory/004-xori.hex +++ b/tests/RV32I/basic/memory/004-xori.hex @@ -0,0 +1,4 @@ +00500593 +00300613 +00c5c6b3 +02d02e23 diff --git a/tests/RV32I/basic/memory/005-ori.hex b/tests/RV32I/basic/memory/005-ori.hex index e69de29..e35fca7 100644 --- a/tests/RV32I/basic/memory/005-ori.hex +++ b/tests/RV32I/basic/memory/005-ori.hex @@ -0,0 +1,3 @@ +00500593 +0035e693 +02d02e23 diff --git a/tests/RV32I/basic/memory/006-andi.hex b/tests/RV32I/basic/memory/006-andi.hex index e69de29..c3ef4b1 100644 --- a/tests/RV32I/basic/memory/006-andi.hex +++ b/tests/RV32I/basic/memory/006-andi.hex @@ -0,0 +1,3 @@ +00500593 +0035f693 +02d02e23 diff --git a/tests/RV32I/basic/memory/007-slli.hex b/tests/RV32I/basic/memory/007-slli.hex index e69de29..786eb96 100644 --- a/tests/RV32I/basic/memory/007-slli.hex +++ b/tests/RV32I/basic/memory/007-slli.hex @@ -0,0 +1,3 @@ +00400593 +00159693 +02d02e23 diff --git a/tests/RV32I/basic/memory/008-srli.hex b/tests/RV32I/basic/memory/008-srli.hex index e69de29..2d261af 100644 --- a/tests/RV32I/basic/memory/008-srli.hex +++ b/tests/RV32I/basic/memory/008-srli.hex @@ -0,0 +1,3 @@ +00400593 +0015d693 +02d02e23 diff --git a/tests/RV32I/basic/memory/009-srai.hex b/tests/RV32I/basic/memory/009-srai.hex index e69de29..522ee6c 100644 --- a/tests/RV32I/basic/memory/009-srai.hex +++ b/tests/RV32I/basic/memory/009-srai.hex @@ -0,0 +1,3 @@ +00800593 +4015d613 +02c02e23 diff --git a/tests/RV32I/basic/memory/010-lui.hex b/tests/RV32I/basic/memory/010-lui.hex index e69de29..c471cc1 100644 --- a/tests/RV32I/basic/memory/010-lui.hex +++ b/tests/RV32I/basic/memory/010-lui.hex @@ -0,0 +1,2 @@ +6d0005b7 +02b02e23 diff --git a/tests/RV32I/basic/memory/011-auipc.hex b/tests/RV32I/basic/memory/011-auipc.hex index e69de29..08a6d87 100644 --- a/tests/RV32I/basic/memory/011-auipc.hex +++ b/tests/RV32I/basic/memory/011-auipc.hex @@ -0,0 +1,5 @@ +6d000617 +6d000697 +00c68633 +02d02c23 +02c02e23 diff --git a/tests/RV32I/basic/memory/012-jal.hex b/tests/RV32I/basic/memory/012-jal.hex index e69de29..cff1113 100644 --- a/tests/RV32I/basic/memory/012-jal.hex +++ b/tests/RV32I/basic/memory/012-jal.hex @@ -0,0 +1,6 @@ +00300693 +00c000ef +00500713 +02e02e23 +00a00793 +02f02e23 diff --git a/tests/RV32I/basic/memory/013-jalr.hex b/tests/RV32I/basic/memory/013-jalr.hex index e69de29..6abf001 100644 --- a/tests/RV32I/basic/memory/013-jalr.hex +++ b/tests/RV32I/basic/memory/013-jalr.hex @@ -0,0 +1,8 @@ +00300693 +00d686b3 +00c000ef +00700713 +02e02e23 +00a00793 +00008067 +02f02e23 diff --git a/tests/RV32I/basic/memory/014-beq.hex b/tests/RV32I/basic/memory/014-beq.hex index e69de29..3e1dfb0 100644 --- a/tests/RV32I/basic/memory/014-beq.hex +++ b/tests/RV32I/basic/memory/014-beq.hex @@ -0,0 +1,14 @@ +00100593 +00200613 +02b58063 +00a00693 +02d02e23 +01400793 +02f02e23 +00000013 +00000013 +00000013 +00f00713 +00c70733 +fec582e3 +02e02e23 diff --git a/tests/RV32I/basic/memory/015-bne.hex b/tests/RV32I/basic/memory/015-bne.hex index e69de29..422f2f8 100644 --- a/tests/RV32I/basic/memory/015-bne.hex +++ b/tests/RV32I/basic/memory/015-bne.hex @@ -0,0 +1,14 @@ +00100593 +00200613 +02c59063 +00a00693 +02d02e23 +01400793 +02f02e23 +00000013 +00000013 +00000013 +00f00713 +00c70733 +feb592e3 +02e02e23 diff --git a/tests/RV32I/basic/memory/016-blt.hex b/tests/RV32I/basic/memory/016-blt.hex index e69de29..2c2a4fb 100644 --- a/tests/RV32I/basic/memory/016-blt.hex +++ b/tests/RV32I/basic/memory/016-blt.hex @@ -0,0 +1,14 @@ +00100593 +00200613 +02c5c063 +00a00693 +02d02e23 +01400793 +02f02e23 +00000013 +00000013 +00000013 +00f00713 +00c70733 +feb642e3 +02e02e23 diff --git a/tests/RV32I/basic/memory/017-bge.hex b/tests/RV32I/basic/memory/017-bge.hex index e69de29..65e322b 100644 --- a/tests/RV32I/basic/memory/017-bge.hex +++ b/tests/RV32I/basic/memory/017-bge.hex @@ -0,0 +1,14 @@ +00100593 +00200613 +02b65063 +00a00693 +02d02e23 +01400793 +02f02e23 +00000013 +00000013 +00000013 +00f00713 +00c70733 +fec5d2e3 +02e02e23 diff --git a/tests/RV32I/basic/memory/018-bltu.hex b/tests/RV32I/basic/memory/018-bltu.hex index e69de29..432f931 100644 --- a/tests/RV32I/basic/memory/018-bltu.hex +++ b/tests/RV32I/basic/memory/018-bltu.hex @@ -0,0 +1,14 @@ +00100593 +00200613 +02c5e063 +00a00693 +02d02e23 +01400793 +02f02e23 +00000013 +00000013 +00000013 +00f00713 +00c70733 +feb662e3 +02e02e23 diff --git a/tests/RV32I/basic/memory/019-bgeu.hex b/tests/RV32I/basic/memory/019-bgeu.hex index e69de29..2a10381 100644 --- a/tests/RV32I/basic/memory/019-bgeu.hex +++ b/tests/RV32I/basic/memory/019-bgeu.hex @@ -0,0 +1,14 @@ +00100593 +00200613 +02b67063 +00a00693 +02d02e23 +01400793 +02f02e23 +00000013 +00000013 +00000013 +00f00713 +00c70733 +fec5f2e3 +02e02e23 diff --git a/tests/RV32I/basic/memory/020-lb.hex b/tests/RV32I/basic/memory/020-lb.hex index e69de29..8f33387 100644 --- a/tests/RV32I/basic/memory/020-lb.hex +++ b/tests/RV32I/basic/memory/020-lb.hex @@ -0,0 +1,4 @@ +7ff00593 +02b02423 +02800603 +02c02e23 diff --git a/tests/RV32I/basic/memory/021-lh.hex b/tests/RV32I/basic/memory/021-lh.hex index e69de29..591874e 100644 --- a/tests/RV32I/basic/memory/021-lh.hex +++ b/tests/RV32I/basic/memory/021-lh.hex @@ -0,0 +1,6 @@ +7ff00593 +00b585b3 +00559593 +02b02423 +02801603 +02c02e23 diff --git a/tests/RV32I/basic/memory/022-lw.hex b/tests/RV32I/basic/memory/022-lw.hex index e69de29..dff6bcf 100644 --- a/tests/RV32I/basic/memory/022-lw.hex +++ b/tests/RV32I/basic/memory/022-lw.hex @@ -0,0 +1,6 @@ +00a00593 +7ff00613 +00b606b3 +00d02e23 +01c02703 +02e02e23 diff --git a/tests/RV32I/basic/memory/025-sb.hex b/tests/RV32I/basic/memory/025-sb.hex index e69de29..4b13840 100644 --- a/tests/RV32I/basic/memory/025-sb.hex +++ b/tests/RV32I/basic/memory/025-sb.hex @@ -0,0 +1,5 @@ +7ff00593 +00b585b3 +02b00823 +03002603 +02c02e23 diff --git a/tests/RV32I/basic/memory/026-sh.hex b/tests/RV32I/basic/memory/026-sh.hex index e69de29..2a5bd30 100644 --- a/tests/RV32I/basic/memory/026-sh.hex +++ b/tests/RV32I/basic/memory/026-sh.hex @@ -0,0 +1,5 @@ +7ff00593 +00659593 +02b01823 +03002603 +02c02e23 diff --git a/tests/RV32I/basic/memory/027-add.hex b/tests/RV32I/basic/memory/027-add.hex index e69de29..52e38f8 100644 --- a/tests/RV32I/basic/memory/027-add.hex +++ b/tests/RV32I/basic/memory/027-add.hex @@ -0,0 +1,3 @@ +00500593 +00b585b3 +02b02e23 diff --git a/tests/RV32I/basic/memory/028-sub.hex b/tests/RV32I/basic/memory/028-sub.hex index e69de29..34dccfa 100644 --- a/tests/RV32I/basic/memory/028-sub.hex +++ b/tests/RV32I/basic/memory/028-sub.hex @@ -0,0 +1,4 @@ +00f00593 +00500613 +40c586b3 +02d02e23 diff --git a/tests/RV32I/basic/memory/029-sll.hex b/tests/RV32I/basic/memory/029-sll.hex index e69de29..f594b60 100644 --- a/tests/RV32I/basic/memory/029-sll.hex +++ b/tests/RV32I/basic/memory/029-sll.hex @@ -0,0 +1,4 @@ +00400593 +00100613 +00c596b3 +02d02e23 diff --git a/tests/RV32I/basic/memory/030-slt.hex b/tests/RV32I/basic/memory/030-slt.hex index e69de29..5fed603 100644 --- a/tests/RV32I/basic/memory/030-slt.hex +++ b/tests/RV32I/basic/memory/030-slt.hex @@ -0,0 +1,4 @@ +00400593 +00100613 +00c5a6b3 +02d02e23 diff --git a/tests/RV32I/basic/memory/031-sltu.hex b/tests/RV32I/basic/memory/031-sltu.hex index e69de29..507d597 100644 --- a/tests/RV32I/basic/memory/031-sltu.hex +++ b/tests/RV32I/basic/memory/031-sltu.hex @@ -0,0 +1,4 @@ +00400593 +00100613 +00c5b6b3 +02d02e23 diff --git a/tests/RV32I/basic/memory/032-xor.hex b/tests/RV32I/basic/memory/032-xor.hex index e69de29..460436a 100644 --- a/tests/RV32I/basic/memory/032-xor.hex +++ b/tests/RV32I/basic/memory/032-xor.hex @@ -0,0 +1,4 @@ +00500593 +00300613 +00c5c6b3 +02d02e23 diff --git a/tests/RV32I/basic/memory/033-srl.hex b/tests/RV32I/basic/memory/033-srl.hex index e69de29..16bd635 100644 --- a/tests/RV32I/basic/memory/033-srl.hex +++ b/tests/RV32I/basic/memory/033-srl.hex @@ -0,0 +1,4 @@ +00400593 +00100613 +00c5d6b3 +02d02e23 diff --git a/tests/RV32I/basic/memory/034-sra.hex b/tests/RV32I/basic/memory/034-sra.hex index e69de29..aebdc6c 100644 --- a/tests/RV32I/basic/memory/034-sra.hex +++ b/tests/RV32I/basic/memory/034-sra.hex @@ -0,0 +1,4 @@ +00400593 +00100613 +40c5d6b3 +02d02e23 diff --git a/tests/RV32I/basic/memory/035-or.hex b/tests/RV32I/basic/memory/035-or.hex index e69de29..0bd07ab 100644 --- a/tests/RV32I/basic/memory/035-or.hex +++ b/tests/RV32I/basic/memory/035-or.hex @@ -0,0 +1,4 @@ +00500593 +00300613 +00c5e6b3 +02d02e23 diff --git a/tests/RV32I/basic/memory/036-and.hex b/tests/RV32I/basic/memory/036-and.hex index e69de29..f5ebb5d 100644 --- a/tests/RV32I/basic/memory/036-and.hex +++ b/tests/RV32I/basic/memory/036-and.hex @@ -0,0 +1,4 @@ +00500593 +00300613 +00c5f6b3 +02d02e23 diff --git a/tests/RV32I/basic/memory/040-timeout.hex b/tests/RV32I/basic/memory/040-timeout.hex new file mode 100644 index 0000000..1403a67 --- /dev/null +++ b/tests/RV32I/basic/memory/040-timeout.hex @@ -0,0 +1,3 @@ +00000593 +00158593 +ffdff06f diff --git a/tests/RV32I/basic/memory/041-forwarding.hex b/tests/RV32I/basic/memory/041-forwarding.hex new file mode 100644 index 0000000..f8907d9 --- /dev/null +++ b/tests/RV32I/basic/memory/041-forwarding.hex @@ -0,0 +1,7 @@ +00a00593 +01400613 +00c586b3 +0016d693 +00c58733 +00d707b3 +02f02e23 diff --git a/tests/RV32I/basic/memory/042-forwarding-lw.hex b/tests/RV32I/basic/memory/042-forwarding-lw.hex new file mode 100644 index 0000000..c2894f6 --- /dev/null +++ b/tests/RV32I/basic/memory/042-forwarding-lw.hex @@ -0,0 +1,8 @@ +00a00593 +01400613 +00c586b3 +02d02423 +00100713 +02802783 +00e787b3 +02f02e23 diff --git a/tests/RV32I/basic/reference/040-timeout.hex b/tests/RV32I/basic/reference/040-timeout.hex new file mode 100644 index 0000000..e69de29 diff --git a/tests/RV32I/basic/reference/041-forwarding.hex b/tests/RV32I/basic/reference/041-forwarding.hex new file mode 100644 index 0000000..e69de29 diff --git a/tests/RV32I/basic/reference/042-forwarding-lw.hex b/tests/RV32I/basic/reference/042-forwarding-lw.hex new file mode 100644 index 0000000..e69de29 diff --git a/tests/RV32I/basic/src/000-addi.s b/tests/RV32I/basic/src/000-addi.s index 8fba36a..460d413 100644 --- a/tests/RV32I/basic/src/000-addi.s +++ b/tests/RV32I/basic/src/000-addi.s @@ -1 +1,14 @@ # addi implementation +.text + +.global _start; + +_start: + addi a1, zero, 5; # a1 = zero + 5 + + nop; + nop; + nop; # 3 nops to not cause forwarding + + sw a1, 60(zero); + \ No newline at end of file diff --git a/tests/RV32I/basic/src/001-sw.s b/tests/RV32I/basic/src/001-sw.s index 12f4b47..7f628da 100644 --- a/tests/RV32I/basic/src/001-sw.s +++ b/tests/RV32I/basic/src/001-sw.s @@ -1 +1,9 @@ # sw implementation +.text + +.global _start + +_start: + addi a1, zero, 10 # Carrega o primeiro número (10) em a1 + + sw a3, 60(zero) diff --git a/tests/RV32I/basic/src/002-slti.s b/tests/RV32I/basic/src/002-slti.s index 978d282..cc39e3a 100644 --- a/tests/RV32I/basic/src/002-slti.s +++ b/tests/RV32I/basic/src/002-slti.s @@ -1 +1,14 @@ # slti implementation +.text + +.global _start; + +_start: + addi a1, zero, 4; # a1 = zero + 5 + + slti a3, a1, 1; # a3 = a1 < 1 + slti a4, a1, 5; # a4 = a1 < 5 + + sw a3, 56(zero); + sw a4, 60(zero); + \ No newline at end of file diff --git a/tests/RV32I/basic/src/003-sltiu.s b/tests/RV32I/basic/src/003-sltiu.s index b308abf..c55482d 100644 --- a/tests/RV32I/basic/src/003-sltiu.s +++ b/tests/RV32I/basic/src/003-sltiu.s @@ -1 +1,11 @@ # sltiu implementation +.text + +.global _start; + +_start: + addi a1, zero, 8; # a1 = zero + 5 + + sltiu a2, a1, 2047; # a2 = a1 < 2047 + + sw a2, 60(zero); diff --git a/tests/RV32I/basic/src/004-xori.s b/tests/RV32I/basic/src/004-xori.s index ec39978..f80f222 100644 --- a/tests/RV32I/basic/src/004-xori.s +++ b/tests/RV32I/basic/src/004-xori.s @@ -1 +1,13 @@ # xori implementation +.text + +.global _start; + +_start: + addi a1, zero, 5; # a1 = zero + 5 + addi a2, zero, 3; # a2 = zero + 3 + + xor a3, a1, a2; + + sw a3, 60(zero); + \ No newline at end of file diff --git a/tests/RV32I/basic/src/005-ori.s b/tests/RV32I/basic/src/005-ori.s index 34d529d..a626fa5 100644 --- a/tests/RV32I/basic/src/005-ori.s +++ b/tests/RV32I/basic/src/005-ori.s @@ -1 +1,12 @@ # ori implementation +.text + +.global _start; + +_start: + addi a1, zero, 5; # a1 = zero + 5 + + ori a3, a1, 3; # a3 = a1 | 3 + + sw a3, 60(zero); + \ No newline at end of file diff --git a/tests/RV32I/basic/src/006-andi.s b/tests/RV32I/basic/src/006-andi.s index 94b969a..5101fbf 100644 --- a/tests/RV32I/basic/src/006-andi.s +++ b/tests/RV32I/basic/src/006-andi.s @@ -1 +1,12 @@ # andi implementation +.text + +.global _start; + +_start: + addi a1, zero, 5; # a1 = zero + 5 + + andi a3, a1, 3; # a3 = a1 & 3 + + sw a3, 60(zero); + \ No newline at end of file diff --git a/tests/RV32I/basic/src/007-slli.s b/tests/RV32I/basic/src/007-slli.s index 96b7be8..8ea4cd9 100644 --- a/tests/RV32I/basic/src/007-slli.s +++ b/tests/RV32I/basic/src/007-slli.s @@ -1 +1,12 @@ # slli implementation +.text + +.global _start; + +_start: + addi a1, zero, 4; # a1 = zero + 5 + + slli a3, a1, 1; # a3 = a1 << 1 + + sw a3, 60(zero); + \ No newline at end of file diff --git a/tests/RV32I/basic/src/008-srli.s b/tests/RV32I/basic/src/008-srli.s index 3c7d588..9058480 100644 --- a/tests/RV32I/basic/src/008-srli.s +++ b/tests/RV32I/basic/src/008-srli.s @@ -1 +1,12 @@ # srli implementation +.text + +.global _start; + +_start: + addi a1, zero, 4; # a1 = zero + 5 + + srli a3, a1, 1; # a3 = a1 >> 1 + + sw a3, 60(zero); + \ No newline at end of file diff --git a/tests/RV32I/basic/src/009-srai.s b/tests/RV32I/basic/src/009-srai.s index 8be5b71..acbc2c1 100644 --- a/tests/RV32I/basic/src/009-srai.s +++ b/tests/RV32I/basic/src/009-srai.s @@ -1 +1,11 @@ # srai implementation +.text + +.global _start; + +_start: + addi a1, zero, 8; # a1 = zero + 5 + + srai a2, a1, 1; # a2 = a1 >>> 1 + + sw a2, 60(zero); diff --git a/tests/RV32I/basic/src/010-lui.s b/tests/RV32I/basic/src/010-lui.s index 15e783d..3cd1172 100644 --- a/tests/RV32I/basic/src/010-lui.s +++ b/tests/RV32I/basic/src/010-lui.s @@ -1 +1,9 @@ # lui implementation +.text + +.global _start; + +_start: + lui a1, 446464; # a1 = 446464 + + sw a1, 60(zero); diff --git a/tests/RV32I/basic/src/011-auipc.s b/tests/RV32I/basic/src/011-auipc.s index ef6a95c..373e840 100644 --- a/tests/RV32I/basic/src/011-auipc.s +++ b/tests/RV32I/basic/src/011-auipc.s @@ -1 +1,14 @@ # auipc implementation +.text + +.global _start; + +_start: + auipc a2, 446464; # a2 = 446464 + PC, PC = 0x00000000 + + auipc a3, 446464; # a3 = 446464 + PC, PC = 0x00000004 + + add a2, a3, a2; # a2 = a3 + a2 + + sw a3, 56(zero); + sw a2, 60(zero); diff --git a/tests/RV32I/basic/src/012-jal.s b/tests/RV32I/basic/src/012-jal.s index 97b0bcc..bd19d47 100644 --- a/tests/RV32I/basic/src/012-jal.s +++ b/tests/RV32I/basic/src/012-jal.s @@ -1 +1,19 @@ # jal implementation +.text + +.global _start + +_start: + addi a3, zero, 3; + + jal subrotina + + addi a4, zero, 5; + + sw a4, 60(zero); + + +subrotina: + addi a5, zero, 10; + + sw a5, 60(zero); diff --git a/tests/RV32I/basic/src/013-jalr.s b/tests/RV32I/basic/src/013-jalr.s index 9fdb3c5..6627802 100644 --- a/tests/RV32I/basic/src/013-jalr.s +++ b/tests/RV32I/basic/src/013-jalr.s @@ -1 +1,20 @@ # jalr implementation +.text + +.global _start + +_start: + addi a3, zero, 3; + add a3, a3, a3; + + jal ra, subrotina; + + addi a4, zero, 7; + + sw a4, 60(zero); + +subrotina: + addi a5, zero, 10; + jalr zero, ra, 0; + + sw a5, 60(zero); diff --git a/tests/RV32I/basic/src/014-beq.s b/tests/RV32I/basic/src/014-beq.s index 8a5c55c..c445c23 100644 --- a/tests/RV32I/basic/src/014-beq.s +++ b/tests/RV32I/basic/src/014-beq.s @@ -1 +1,30 @@ # beq implementation +.text + +.global _start + +_start: + addi a1, zero, 1; + addi a2, zero, 2; + + beq a1, a1, desvio; # a1 == a1 + + addi a3, zero, 10; + + sw a3, 60(zero); + +desvio2: + addi a5, zero, 20; + sw a5, 60(zero); + + nop + nop + nop + +desvio: + addi a4, zero, 15; + add a4, a4, a2; + + beq a1, a2, desvio2; # a1 == a2 + + sw a4, 60(zero); diff --git a/tests/RV32I/basic/src/015-bne.s b/tests/RV32I/basic/src/015-bne.s index c0422bf..1e50283 100644 --- a/tests/RV32I/basic/src/015-bne.s +++ b/tests/RV32I/basic/src/015-bne.s @@ -1 +1,30 @@ # bne implementation +.text + +.global _start + +_start: + addi a1, zero, 1; + addi a2, zero, 2; + + bne a1, a2, desvio; + + addi a3, zero, 10; + + sw a3, 60(zero); + +desvio2: + addi a5, zero, 20; + sw a5, 60(zero); + + nop + nop + nop + +desvio: + addi a4, zero, 15; + add a4, a4, a2; + + bne a1, a1, desvio2; + + sw a4, 60(zero); diff --git a/tests/RV32I/basic/src/016-blt.s b/tests/RV32I/basic/src/016-blt.s index 06f0cbd..87537bd 100644 --- a/tests/RV32I/basic/src/016-blt.s +++ b/tests/RV32I/basic/src/016-blt.s @@ -1 +1,30 @@ # blt implementation +.text + +.global _start + +_start: + addi a1, zero, 1; + addi a2, zero, 2; + + blt a1, a2, desvio; # a1 < a2 + + addi a3, zero, 10; + + sw a3, 60(zero); + +desvio2: + addi a5, zero, 20; + sw a5, 60(zero); + + nop + nop + nop + +desvio: + addi a4, zero, 15; + add a4, a4, a2; + + blt a2, a1, desvio2; # a1 < a1 + + sw a4, 60(zero); diff --git a/tests/RV32I/basic/src/017-bge.s b/tests/RV32I/basic/src/017-bge.s index 485ad0b..db468be 100644 --- a/tests/RV32I/basic/src/017-bge.s +++ b/tests/RV32I/basic/src/017-bge.s @@ -1 +1,30 @@ # bge implementation +.text + +.global _start + +_start: + addi a1, zero, 1; + addi a2, zero, 2; + + bge a2, a1, desvio; # a2 >= a1 + + addi a3, zero, 10; + + sw a3, 60(zero); + +desvio2: + addi a5, zero, 20; + sw a5, 60(zero); + + nop + nop + nop + +desvio: + addi a4, zero, 15; + add a4, a4, a2; + + bge a1, a2, desvio2; # a1 >= a2 + + sw a4, 60(zero); diff --git a/tests/RV32I/basic/src/018-bltu.s b/tests/RV32I/basic/src/018-bltu.s index bea42f5..286eadd 100644 --- a/tests/RV32I/basic/src/018-bltu.s +++ b/tests/RV32I/basic/src/018-bltu.s @@ -1 +1,30 @@ # bltu implementation +.text + +.global _start + +_start: + addi a1, zero, 1; + addi a2, zero, 2; + + bltu a1, a2, desvio; # a1 < a2 + + addi a3, zero, 10; + + sw a3, 60(zero); + +desvio2: + addi a5, zero, 20; + sw a5, 60(zero); + + nop + nop + nop + +desvio: + addi a4, zero, 15; + add a4, a4, a2; + + bltu a2, a1, desvio2; # a2 < a1 + + sw a4, 60(zero); diff --git a/tests/RV32I/basic/src/019-bgeu.s b/tests/RV32I/basic/src/019-bgeu.s index 02b59fe..61f6fe0 100644 --- a/tests/RV32I/basic/src/019-bgeu.s +++ b/tests/RV32I/basic/src/019-bgeu.s @@ -1 +1,30 @@ # bgeu implementation +.text + +.global _start + +_start: + addi a1, zero, 1; + addi a2, zero, 2; + + bgeu a2, a1, desvio; # a2 >= a1 + + addi a3, zero, 10; + + sw a3, 60(zero); + +desvio2: + addi a5, zero, 20; + sw a5, 60(zero); + + nop + nop + nop + +desvio: + addi a4, zero, 15; + add a4, a4, a2; + + bgeu a1, a2, desvio2; # a1 >= a2 + + sw a4, 60(zero); diff --git a/tests/RV32I/basic/src/020-lb.s b/tests/RV32I/basic/src/020-lb.s index 2f5e75b..87fb9d5 100644 --- a/tests/RV32I/basic/src/020-lb.s +++ b/tests/RV32I/basic/src/020-lb.s @@ -1 +1,12 @@ # lb implementation +.text + +.global _start + +_start: + addi a1, zero, 2047; # Carrega o primeiro número (2047) em a1 + + sw a1, 40(zero); + lb a2, 40(zero); + + sw a2, 60(zero); diff --git a/tests/RV32I/basic/src/021-lh.s b/tests/RV32I/basic/src/021-lh.s index 1527739..e99eceb 100644 --- a/tests/RV32I/basic/src/021-lh.s +++ b/tests/RV32I/basic/src/021-lh.s @@ -1 +1,15 @@ # lh implementation +.text + +.global _start + +_start: + addi a1, zero, 2047; # Carrega o primeiro número (2047) em a1 + add a1, a1, a1; + + slli a1, a1, 5; + + sw a1, 40(zero); + lh a2, 40(zero); + + sw a2, 60(zero); diff --git a/tests/RV32I/basic/src/022-lw.s b/tests/RV32I/basic/src/022-lw.s index 6a9b8a8..c4a26c3 100644 --- a/tests/RV32I/basic/src/022-lw.s +++ b/tests/RV32I/basic/src/022-lw.s @@ -1 +1,13 @@ # lw implementation +.text + +.global _start; + +_start: + addi a1, zero, 10; + addi a2, zero, 2047; + add a3, a2, a1; + + sw a3, 28(zero); + lw a4, 28(zero); + sw a4, 60(zero); diff --git a/tests/RV32I/basic/src/025-sb.s b/tests/RV32I/basic/src/025-sb.s index f289877..aa8d61d 100644 --- a/tests/RV32I/basic/src/025-sb.s +++ b/tests/RV32I/basic/src/025-sb.s @@ -1 +1,15 @@ # sb implementation +.text + +.global _start + +_start: + addi a1, zero, 2047; # Carrega o primeiro número (2047) em a1 + + add a1, a1, a1; + + sb a1, 48(zero); + + lw a2, 48(zero); + + sw a2, 60(zero); diff --git a/tests/RV32I/basic/src/026-sh.s b/tests/RV32I/basic/src/026-sh.s index 5a6a94d..f6ce9f7 100644 --- a/tests/RV32I/basic/src/026-sh.s +++ b/tests/RV32I/basic/src/026-sh.s @@ -1 +1,14 @@ # sh implementation +.text + +.global _start + +_start: + addi a1, zero, 2047; # Carrega o primeiro número (2047) em a1 + + slli a1, a1, 6; + + sh a1, 48(zero); + + lw a2, 48(zero); + sw a2, 60(zero); diff --git a/tests/RV32I/basic/src/027-add.s b/tests/RV32I/basic/src/027-add.s index 77c3f5a..82894b7 100644 --- a/tests/RV32I/basic/src/027-add.s +++ b/tests/RV32I/basic/src/027-add.s @@ -1 +1,11 @@ # add implementation +.text + +.global _start; + +_start: + addi a1, zero, 5; # a1 = zero + 5 + add a1, a1, a1; # a1 = a1 + a1 + + sw a1, 60(zero); + \ No newline at end of file diff --git a/tests/RV32I/basic/src/028-sub.s b/tests/RV32I/basic/src/028-sub.s index 3b59d59..e5d8980 100644 --- a/tests/RV32I/basic/src/028-sub.s +++ b/tests/RV32I/basic/src/028-sub.s @@ -1 +1,14 @@ # sub implementation +.text + +.global _start; + +_start: + addi a1, zero, 15; # a1 = zero + 15 + + addi a2, zero, 5; + + sub a3, a1, a2; # a3 = a1 - a2 + + sw a3, 60(zero); + \ No newline at end of file diff --git a/tests/RV32I/basic/src/029-sll.s b/tests/RV32I/basic/src/029-sll.s index 5a4afdf..2777034 100644 --- a/tests/RV32I/basic/src/029-sll.s +++ b/tests/RV32I/basic/src/029-sll.s @@ -1 +1,13 @@ # sll implementation +.text + +.global _start; + +_start: + addi a1, zero, 4; # a1 = zero + 5 + addi a2, zero, 1; # a1 = zero + 1 + + sll a3, a1, a2; # a3 = a1 << a2 + + sw a3, 60(zero); + \ No newline at end of file diff --git a/tests/RV32I/basic/src/030-slt.s b/tests/RV32I/basic/src/030-slt.s index ba930fc..0fda59d 100644 --- a/tests/RV32I/basic/src/030-slt.s +++ b/tests/RV32I/basic/src/030-slt.s @@ -1 +1,13 @@ # slt implementation +.text + +.global _start; + +_start: + addi a1, zero, 4; # a1 = zero + 5 + addi a2, zero, 1; # a1 = zero + 1 + + slt a3, a1, a2; # a3 = a1 < a2 + + sw a3, 60(zero); + \ No newline at end of file diff --git a/tests/RV32I/basic/src/031-sltu.s b/tests/RV32I/basic/src/031-sltu.s index ef0dfd9..114e705 100644 --- a/tests/RV32I/basic/src/031-sltu.s +++ b/tests/RV32I/basic/src/031-sltu.s @@ -1 +1,13 @@ # sltu implementation +.text + +.global _start; + +_start: + addi a1, zero, 4; # a1 = zero + 5 + addi a2, zero, 1; # a1 = zero + 1 + + sltu a3, a1, a2; # a3 = a1 < a2 + + sw a3, 60(zero); + \ No newline at end of file diff --git a/tests/RV32I/basic/src/032-xor.s b/tests/RV32I/basic/src/032-xor.s index a3abbe5..ffa86fe 100644 --- a/tests/RV32I/basic/src/032-xor.s +++ b/tests/RV32I/basic/src/032-xor.s @@ -1 +1,13 @@ # xor implementation +.text + +.global _start; + +_start: + addi a1, zero, 5; # a1 = zero + 5 + addi a2, zero, 3; # a2 = zero + 3 + + xor a3, a1, a2; # a3 = a1 ^ a2 + + sw a3, 60(zero); + \ No newline at end of file diff --git a/tests/RV32I/basic/src/033-srl.s b/tests/RV32I/basic/src/033-srl.s index 627f467..2015b2e 100644 --- a/tests/RV32I/basic/src/033-srl.s +++ b/tests/RV32I/basic/src/033-srl.s @@ -1 +1,13 @@ # srl implementation +.text + +.global _start; + +_start: + addi a1, zero, 4; # a1 = zero + 5 + addi a2, zero, 1; # a1 = zero + 1 + + srl a3, a1, a2; # a3 = a1 >> a2 + + sw a3, 60(zero); + \ No newline at end of file diff --git a/tests/RV32I/basic/src/034-sra.s b/tests/RV32I/basic/src/034-sra.s index 2d2b0af..1322bde 100644 --- a/tests/RV32I/basic/src/034-sra.s +++ b/tests/RV32I/basic/src/034-sra.s @@ -1 +1,13 @@ # sra implementation +.text + +.global _start; + +_start: + addi a1, zero, 4; # a1 = zero + 5 + addi a2, zero, 1; # a1 = zero + 1 + + sra a3, a1, a2; # a3 = a1 >>> a2 + + sw a3, 60(zero); + \ No newline at end of file diff --git a/tests/RV32I/basic/src/035-or.s b/tests/RV32I/basic/src/035-or.s index d003b86..9b7d5a5 100644 --- a/tests/RV32I/basic/src/035-or.s +++ b/tests/RV32I/basic/src/035-or.s @@ -1 +1,13 @@ # or implementation +.text + +.global _start; + +_start: + addi a1, zero, 5; # a1 = zero + 5 + addi a2, zero, 3; # a2 = zero + 3 + + or a3, a1, a2; # a3 = a1 | a2 + + sw a3, 60(zero); + \ No newline at end of file diff --git a/tests/RV32I/basic/src/036-and.s b/tests/RV32I/basic/src/036-and.s index 97eb9cd..53a5e13 100644 --- a/tests/RV32I/basic/src/036-and.s +++ b/tests/RV32I/basic/src/036-and.s @@ -1 +1,13 @@ # and implementation +.text + +.global _start; + +_start: + addi a1, zero, 5; # a1 = zero + 5 + addi a2, zero, 3; # a2 = zero + 3 + + and a3, a1, a2; # a3 = a1 & a2 + + sw a3, 60(zero); + \ No newline at end of file diff --git a/tests/RV32I/basic/src/040-timeout.s b/tests/RV32I/basic/src/040-timeout.s new file mode 100644 index 0000000..661cbca --- /dev/null +++ b/tests/RV32I/basic/src/040-timeout.s @@ -0,0 +1,11 @@ +.text + +.global _start; + +_start: + addi a1, zero, 0; + +loop: # infinite loop + addi a1, a1, 1; # a1 = a1 + 1 + + j loop; diff --git a/tests/RV32I/basic/src/041-forwarding.s b/tests/RV32I/basic/src/041-forwarding.s new file mode 100644 index 0000000..b46bd21 --- /dev/null +++ b/tests/RV32I/basic/src/041-forwarding.s @@ -0,0 +1,15 @@ +.global _start + +_start: + addi a1, zero, 10 # Carrega o primeiro número (10) em a1 + addi a2, zero, 20 # Carrega o segundo número (20) em a2 + + add a3, a1, a2 # Soma a1 e a2, armazena o resultado em a3 + + srli a3, a3, 1 + + add a4, a1, a2 + + add a5, a4, a3 + + sw a5, 60(zero) \ No newline at end of file diff --git a/tests/RV32I/basic/src/042-forwarding-lw.s b/tests/RV32I/basic/src/042-forwarding-lw.s new file mode 100644 index 0000000..b819148 --- /dev/null +++ b/tests/RV32I/basic/src/042-forwarding-lw.s @@ -0,0 +1,16 @@ +.global _start + +_start: + addi a1, zero, 10 # Carrega o primeiro número (10) em a1 + addi a2, zero, 20 # Carrega o segundo número (20) em a2 + + add a3, a1, a2 # Soma a1 e a2, armazena o resultado em a3 + + sw a3, 40(zero) + + addi a4, zero, 1 + + lw a5, 40(zero) + add a5, a5, a4 + + sw a5, 60(zero) \ No newline at end of file