add test data

This commit is contained in:
2024-07-24 11:54:23 +00:00
parent 6c43aa77fb
commit 69adad54ad
55 changed files with 10071 additions and 0 deletions

View File

@ -0,0 +1,21 @@
#include "io.inc"
int a[4];
int main() {
int b[4];
int i;
for (i = 0; i < 4; i++) {
a[i] = 0;
b[i] = i + 1;
}
for (i = 0; i < 4; i++) {
printInt(a[i]);
}
int *p;
p = b;
for (i = 0; i < 4; i++) {
printInt(p[i]);
}
return judgeResult % Mod; // 123
}

View File

@ -0,0 +1,32 @@
@00000000
37 01 02 00 EF 10 00 04 13 05 F0 0F B7 06 03 00
23 82 A6 00 6F F0 9F FF
@00001000
37 17 00 00 83 27 07 1B 33 45 F5 00 13 05 D5 0A
23 28 A7 1A 67 80 00 00 83 47 05 00 63 82 07 02
37 17 00 00 83 26 07 1B B3 C7 D7 00 93 87 97 20
23 28 F7 1A 13 05 15 00 83 47 05 00 E3 94 07 FE
67 80 00 00 13 01 01 FE 23 2E 11 00 23 2C 81 00
23 2A 91 00 37 14 00 00 93 07 04 1A 23 A0 07 00
13 07 10 00 23 20 E1 00 23 A2 07 00 13 07 20 00
23 22 E1 00 23 A4 07 00 13 07 30 00 23 24 E1 00
23 A6 07 00 93 07 40 00 23 26 F1 00 13 04 04 1A
93 04 04 01 03 25 04 00 EF F0 9F F6 13 04 44 00
E3 1A 94 FE 13 05 10 00 EF F0 9F F5 13 05 20 00
EF F0 1F F5 13 05 30 00 EF F0 9F F4 13 05 40 00
EF F0 1F F4 93 05 D0 0F B7 17 00 00 03 A5 07 1B
EF 00 C0 09 83 20 C1 01 03 24 81 01 83 24 41 01
13 01 01 02 67 80 00 00 63 40 05 06 63 C6 05 06
13 86 05 00 93 05 05 00 13 05 F0 FF 63 0C 06 02
93 06 10 00 63 7A B6 00 63 58 C0 00 13 16 16 00
93 96 16 00 E3 6A B6 FE 13 05 00 00 63 E6 C5 00
B3 85 C5 40 33 65 D5 00 93 D6 16 00 13 56 16 00
E3 96 06 FE 67 80 00 00 93 82 00 00 EF F0 5F FB
13 85 05 00 67 80 02 00 33 05 A0 40 63 D8 05 00
B3 05 B0 40 6F F0 DF F9 B3 05 B0 40 93 82 00 00
EF F0 1F F9 33 05 A0 40 67 80 02 00 93 82 00 00
63 CA 05 00 63 4C 05 00 EF F0 9F F7 13 85 05 00
67 80 02 00 B3 05 B0 40 E3 58 05 FE 33 05 A0 40
EF F0 1F F6 33 05 B0 40 67 80 02 00
@0000119C
FD 00 00 00

View File

@ -0,0 +1,401 @@
./test/test.om: file format elf32-littleriscv
Disassembly of section .rom:
00000000 <.rom>:
0: 00020137 lui sp,0x20
4: 040010ef jal ra,1044 <main>
8: 0ff00513 li a0,255
c: 000306b7 lui a3,0x30
10: 00a68223 sb a0,4(a3) # 30004 <__heap_start+0x2e004>
14: ff9ff06f j c <printInt-0xff4>
Disassembly of section .text:
00001000 <printInt>:
1000: 00001737 lui a4,0x1
1004: 1b072783 lw a5,432(a4) # 11b0 <__bss_end>
1008: 00f54533 xor a0,a0,a5
100c: 0ad50513 addi a0,a0,173
1010: 1aa72823 sw a0,432(a4)
1014: 00008067 ret
00001018 <printStr>:
1018: 00054783 lbu a5,0(a0)
101c: 02078263 beqz a5,1040 <printStr+0x28>
1020: 00001737 lui a4,0x1
1024: 1b072683 lw a3,432(a4) # 11b0 <__bss_end>
1028: 00d7c7b3 xor a5,a5,a3
102c: 20978793 addi a5,a5,521
1030: 1af72823 sw a5,432(a4)
1034: 00150513 addi a0,a0,1
1038: 00054783 lbu a5,0(a0)
103c: fe0794e3 bnez a5,1024 <printStr+0xc>
1040: 00008067 ret
00001044 <main>:
1044: fe010113 addi sp,sp,-32 # 1ffe0 <__heap_start+0x1dfe0>
1048: 00112e23 sw ra,28(sp)
104c: 00812c23 sw s0,24(sp)
1050: 00912a23 sw s1,20(sp)
1054: 00001437 lui s0,0x1
1058: 1a040793 addi a5,s0,416 # 11a0 <__bss_start>
105c: 0007a023 sw zero,0(a5)
1060: 00100713 li a4,1
1064: 00e12023 sw a4,0(sp)
1068: 0007a223 sw zero,4(a5)
106c: 00200713 li a4,2
1070: 00e12223 sw a4,4(sp)
1074: 0007a423 sw zero,8(a5)
1078: 00300713 li a4,3
107c: 00e12423 sw a4,8(sp)
1080: 0007a623 sw zero,12(a5)
1084: 00400793 li a5,4
1088: 00f12623 sw a5,12(sp)
108c: 1a040413 addi s0,s0,416
1090: 01040493 addi s1,s0,16
1094: 00042503 lw a0,0(s0)
1098: f69ff0ef jal ra,1000 <printInt>
109c: 00440413 addi s0,s0,4
10a0: fe941ae3 bne s0,s1,1094 <main+0x50>
10a4: 00100513 li a0,1
10a8: f59ff0ef jal ra,1000 <printInt>
10ac: 00200513 li a0,2
10b0: f51ff0ef jal ra,1000 <printInt>
10b4: 00300513 li a0,3
10b8: f49ff0ef jal ra,1000 <printInt>
10bc: 00400513 li a0,4
10c0: f41ff0ef jal ra,1000 <printInt>
10c4: 0fd00593 li a1,253
10c8: 000017b7 lui a5,0x1
10cc: 1b07a503 lw a0,432(a5) # 11b0 <__bss_end>
10d0: 09c000ef jal ra,116c <__modsi3>
10d4: 01c12083 lw ra,28(sp)
10d8: 01812403 lw s0,24(sp)
10dc: 01412483 lw s1,20(sp)
10e0: 02010113 addi sp,sp,32
10e4: 00008067 ret
000010e8 <__divsi3>:
10e8: 06054063 bltz a0,1148 <__umodsi3+0x10>
10ec: 0605c663 bltz a1,1158 <__umodsi3+0x20>
000010f0 <__udivsi3>:
10f0: 00058613 mv a2,a1
10f4: 00050593 mv a1,a0
10f8: fff00513 li a0,-1
10fc: 02060c63 beqz a2,1134 <__udivsi3+0x44>
1100: 00100693 li a3,1
1104: 00b67a63 bgeu a2,a1,1118 <__udivsi3+0x28>
1108: 00c05863 blez a2,1118 <__udivsi3+0x28>
110c: 00161613 slli a2,a2,0x1
1110: 00169693 slli a3,a3,0x1
1114: feb66ae3 bltu a2,a1,1108 <__udivsi3+0x18>
1118: 00000513 li a0,0
111c: 00c5e663 bltu a1,a2,1128 <__udivsi3+0x38>
1120: 40c585b3 sub a1,a1,a2
1124: 00d56533 or a0,a0,a3
1128: 0016d693 srli a3,a3,0x1
112c: 00165613 srli a2,a2,0x1
1130: fe0696e3 bnez a3,111c <__udivsi3+0x2c>
1134: 00008067 ret
00001138 <__umodsi3>:
1138: 00008293 mv t0,ra
113c: fb5ff0ef jal ra,10f0 <__udivsi3>
1140: 00058513 mv a0,a1
1144: 00028067 jr t0
1148: 40a00533 neg a0,a0
114c: 0005d863 bgez a1,115c <__umodsi3+0x24>
1150: 40b005b3 neg a1,a1
1154: f9dff06f j 10f0 <__udivsi3>
1158: 40b005b3 neg a1,a1
115c: 00008293 mv t0,ra
1160: f91ff0ef jal ra,10f0 <__udivsi3>
1164: 40a00533 neg a0,a0
1168: 00028067 jr t0
0000116c <__modsi3>:
116c: 00008293 mv t0,ra
1170: 0005ca63 bltz a1,1184 <__modsi3+0x18>
1174: 00054c63 bltz a0,118c <__modsi3+0x20>
1178: f79ff0ef jal ra,10f0 <__udivsi3>
117c: 00058513 mv a0,a1
1180: 00028067 jr t0
1184: 40b005b3 neg a1,a1
1188: fe0558e3 bgez a0,1178 <__modsi3+0xc>
118c: 40a00533 neg a0,a0
1190: f61ff0ef jal ra,10f0 <__udivsi3>
1194: 40b00533 neg a0,a1
1198: 00028067 jr t0
Disassembly of section .srodata:
0000119c <Mod>:
119c: 00fd addi ra,ra,31
...
Disassembly of section .bss:
000011a0 <a>:
...
Disassembly of section .sbss:
000011b0 <judgeResult>:
11b0: 0000 unimp
...
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 fmsub.d ft6,ft6,ft4,ft7,rmm
4: 2820 fld fs0,80(s0)
6: 29554e47 fmsub.s ft8,fa0,fs5,ft5,rmm
a: 3820 fld fs0,112(s0)
c: 332e fld ft6,232(sp)
e: 302e fld ft0,232(sp)
...
Disassembly of section .debug_line:
00000000 <.debug_line>:
0: 0164 addi s1,sp,140
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0045 c.nop 17
8: 0000 unimp
a: 0101 addi sp,sp,0
c: 000d0efb 0xd0efb
10: 0101 addi sp,sp,0
12: 0101 addi sp,sp,0
14: 0000 unimp
16: 0100 addi s0,sp,128
18: 0000 unimp
1a: 2e01 jal 32a <printInt-0xcd6>
1c: 2f2e fld ft10,200(sp)
1e: 2e2e fld ft8,200(sp)
20: 2f2e2e2f 0x2f2e2e2f
24: 2f2e fld ft10,200(sp)
26: 6972 flw fs2,28(sp)
28: 2d766373 csrrsi t1,0x2d7,12
2c: 2f636367 0x2f636367
30: 696c flw fa1,84(a0)
32: 6762 flw fa4,24(sp)
34: 632f6363 bltu t5,s2,65a <printInt-0x9a6>
38: 69666e6f jal t3,666ce <__heap_start+0x646ce>
3c: 69722f67 0x69722f67
40: 00766373 csrrsi t1,0x7,12
44: 6400 flw fs0,8(s0)
46: 7669 lui a2,0xffffa
48: 532e lw t1,232(sp)
4a: 0100 addi s0,sp,128
4c: 0000 unimp
4e: 0000 unimp
50: 0205 addi tp,tp,1
52: 10e8 addi a0,sp,108
54: 0000 unimp
56: 0100c403 lbu s0,16(ra)
5a: 04090103 lb sp,64(s2)
5e: 0100 addi s0,sp,128
60: 04090403 lb s0,64(s2)
64: 0100 addi s0,sp,128
66: 04090103 lb sp,64(s2)
6a: 0100 addi s0,sp,128
6c: 04090103 lb sp,64(s2)
70: 0100 addi s0,sp,128
72: 04090103 lb sp,64(s2)
76: 0100 addi s0,sp,128
78: 04090103 lb sp,64(s2)
7c: 0100 addi s0,sp,128
7e: 04090103 lb sp,64(s2)
82: 0100 addi s0,sp,128
84: 04090203 lb tp,64(s2)
88: 0100 addi s0,sp,128
8a: 04090103 lb sp,64(s2)
8e: 0100 addi s0,sp,128
90: 04090103 lb sp,64(s2)
94: 0100 addi s0,sp,128
96: 04090103 lb sp,64(s2)
9a: 0100 addi s0,sp,128
9c: 04090203 lb tp,64(s2)
a0: 0100 addi s0,sp,128
a2: 04090203 lb tp,64(s2)
a6: 0100 addi s0,sp,128
a8: 04090103 lb sp,64(s2)
ac: 0100 addi s0,sp,128
ae: 04090103 lb sp,64(s2)
b2: 0100 addi s0,sp,128
b4: 04090203 lb tp,64(s2)
b8: 0100 addi s0,sp,128
ba: 04090103 lb sp,64(s2)
be: 0100 addi s0,sp,128
c0: 04090103 lb sp,64(s2)
c4: 0100 addi s0,sp,128
c6: 04090203 lb tp,64(s2)
ca: 0100 addi s0,sp,128
cc: 04090503 lb a0,64(s2)
d0: 0100 addi s0,sp,128
d2: 04090103 lb sp,64(s2)
d6: 0100 addi s0,sp,128
d8: 04090103 lb sp,64(s2)
dc: 0100 addi s0,sp,128
de: 04090103 lb sp,64(s2)
e2: 0100 addi s0,sp,128
e4: 04090503 lb a0,64(s2)
e8: 0100 addi s0,sp,128
ea: 04090103 lb sp,64(s2)
ee: 0100 addi s0,sp,128
f0: 04090103 lb sp,64(s2)
f4: 0100 addi s0,sp,128
f6: 04090103 lb sp,64(s2)
fa: 0100 addi s0,sp,128
fc: 04090203 lb tp,64(s2)
100: 0100 addi s0,sp,128
102: 04090203 lb tp,64(s2)
106: 0100 addi s0,sp,128
108: 04090103 lb sp,64(s2)
10c: 0100 addi s0,sp,128
10e: 04090103 lb sp,64(s2)
112: 0100 addi s0,sp,128
114: 04090103 lb sp,64(s2)
118: 0100 addi s0,sp,128
11a: 04090403 lb s0,64(s2)
11e: 0100 addi s0,sp,128
120: 04090103 lb sp,64(s2)
124: 0100 addi s0,sp,128
126: 04090103 lb sp,64(s2)
12a: 0100 addi s0,sp,128
12c: 04090203 lb tp,64(s2)
130: 0100 addi s0,sp,128
132: 04090103 lb sp,64(s2)
136: 0100 addi s0,sp,128
138: 04090103 lb sp,64(s2)
13c: 0100 addi s0,sp,128
13e: 04090203 lb tp,64(s2)
142: 0100 addi s0,sp,128
144: 04090103 lb sp,64(s2)
148: 0100 addi s0,sp,128
14a: 04090203 lb tp,64(s2)
14e: 0100 addi s0,sp,128
150: 04090103 lb sp,64(s2)
154: 0100 addi s0,sp,128
156: 04090103 lb sp,64(s2)
15a: 0100 addi s0,sp,128
15c: 04090103 lb sp,64(s2)
160: 0100 addi s0,sp,128
162: 0409 addi s0,s0,2
164: 0000 unimp
166: 0101 addi sp,sp,0
Disassembly of section .debug_info:
00000000 <.debug_info>:
0: 0022 c.slli zero,0x8
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0104 addi s1,sp,128
c: 0000 unimp
e: 0000 unimp
10: 10e8 addi a0,sp,108
12: 0000 unimp
14: 119c addi a5,sp,224
16: 0000 unimp
18: 0000 unimp
1a: 0000 unimp
1c: 0000002f 0x2f
20: 0088 addi a0,sp,64
22: 0000 unimp
24: 8001 c.srli64 s0
Disassembly of section .debug_abbrev:
00000000 <.debug_abbrev>:
0: 1101 addi sp,sp,-32
2: 1000 addi s0,sp,32
4: 1106 slli sp,sp,0x21
6: 1201 addi tp,tp,-32
8: 0301 addi t1,t1,0
a: 1b0e slli s6,s6,0x23
c: 250e fld fa0,192(sp)
e: 130e slli t1,t1,0x23
10: 0005 c.nop 1
...
Disassembly of section .debug_aranges:
00000000 <.debug_aranges>:
0: 001c 0x1c
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0004 0x4
c: 0000 unimp
e: 0000 unimp
10: 10e8 addi a0,sp,108
12: 0000 unimp
14: 00b4 addi a3,sp,72
...
Disassembly of section .debug_str:
00000000 <.debug_str>:
0: 2e2e fld ft8,200(sp)
2: 2f2e2e2f 0x2f2e2e2f
6: 2e2e fld ft8,200(sp)
8: 722f2e2f 0x722f2e2f
c: 7369 lui t1,0xffffa
e: 672d7663 bgeu s10,s2,67a <printInt-0x986>
12: 6c2f6363 bltu t5,sp,6d8 <printInt-0x928>
16: 6269 lui tp,0x1a
18: 2f636367 0x2f636367
1c: 666e6f63 bltu t3,t1,69a <printInt-0x966>
20: 6769 lui a4,0x1a
22: 7369722f 0x7369722f
26: 642f7663 bgeu t5,sp,672 <printInt-0x98e>
2a: 7669 lui a2,0xffffa
2c: 532e lw t1,232(sp)
2e: 2f00 fld fs0,24(a4)
30: 6f68 flw fa0,92(a4)
32: 656d lui a0,0x1b
34: 2d75772f 0x2d75772f
38: 6971 lui s2,0x1c
3a: 676e flw fa4,216(sp)
3c: 312d jal fffffc66 <__heap_start+0xffffdc66>
3e: 3735 jal ffffff6a <__heap_start+0xffffdf6a>
40: 7369722f 0x7369722f
44: 672d7663 bgeu s10,s2,6b0 <printInt-0x950>
48: 756e flw fa0,248(sp)
4a: 742d lui s0,0xfffeb
4c: 636c6f6f jal t5,c6682 <__heap_start+0xc4682>
50: 6168 flw fa0,68(a0)
52: 6e69 lui t3,0x1a
54: 6975622f 0x6975622f
58: 646c flw fa1,76(s0)
5a: 672d lui a4,0xb
5c: 6e2d6363 bltu s10,sp,742 <printInt-0x8be>
60: 7765 lui a4,0xffff9
62: 696c flw fa1,84(a0)
64: 2d62 fld fs10,24(sp)
66: 67617473 csrrci s0,0x676,2
6a: 3265 jal fffffa12 <__heap_start+0xffffda12>
6c: 7369722f 0x7369722f
70: 32337663 bgeu t1,gp,39c <printInt-0xc64>
74: 752d lui a0,0xfffeb
76: 6b6e flw fs6,216(sp)
78: 6f6e flw ft10,216(sp)
7a: 652d6e77 0x652d6e77
7e: 666c flw fa1,76(a2)
80: 62696c2f 0x62696c2f
84: 00636367 0x636367
88: 20554e47 fmsub.s ft8,fa0,ft5,ft4,rmm
8c: 5341 li t1,-16
8e: 3220 fld fs0,96(a2)
90: 332e fld ft6,232(sp)
92: 2e31 jal 3ae <printInt-0xc52>
94: 0031 c.nop 12

View File

@ -0,0 +1,23 @@
#include "io.inc"
int a[4];
int *pa = a;
int main() {
int *pb[4];
int i;
pb[0] = pa;
pb[1] = pa;
pb[2] = pa;
pb[3] = pa;
printInt(4);
for (i = 0; i < 4; i++)
pb[0][i] = i + 1;
for (i = 0; i < 4; i++)
printInt(pb[1][i]);
for (i = 0; i < 4; i++)
pb[2][i] = 0;
for (i = 0; i < 4; i++)
printInt(pb[3][i]);
return judgeResult % Mod; // 43
}

View File

@ -0,0 +1,35 @@
@00000000
37 01 02 00 EF 10 00 04 13 05 F0 0F B7 06 03 00
23 82 A6 00 6F F0 9F FF
@00001000
37 17 00 00 83 27 07 1C 33 45 F5 00 13 05 D5 0A
23 20 A7 1C 67 80 00 00 83 47 05 00 63 82 07 02
37 17 00 00 83 26 07 1C B3 C7 D7 00 93 87 97 20
23 20 F7 1C 13 05 15 00 83 47 05 00 E3 94 07 FE
67 80 00 00 13 01 01 FE 23 2E 11 00 23 2C 81 00
23 2A 91 00 23 28 21 01 23 26 31 01 B7 17 00 00
03 A9 C7 1A 13 05 40 00 EF F0 9F F9 93 07 10 00
23 20 F9 00 93 07 20 00 23 22 F9 00 93 07 30 00
23 24 F9 00 93 07 40 00 23 26 F9 00 13 04 09 00
93 09 09 01 93 04 09 00 03 A5 04 00 EF F0 5F F6
93 84 44 00 E3 9A 34 FF 23 20 09 00 23 22 09 00
23 24 09 00 23 26 09 00 03 25 04 00 EF F0 5F F4
13 04 44 00 E3 9A 89 FE 93 05 D0 0F B7 17 00 00
03 A5 07 1C EF 00 40 0A 83 20 C1 01 03 24 81 01
83 24 41 01 03 29 01 01 83 29 C1 00 13 01 01 02
67 80 00 00 63 40 05 06 63 C6 05 06 13 86 05 00
93 05 05 00 13 05 F0 FF 63 0C 06 02 93 06 10 00
63 7A B6 00 63 58 C0 00 13 16 16 00 93 96 16 00
E3 6A B6 FE 13 05 00 00 63 E6 C5 00 B3 85 C5 40
33 65 D5 00 93 D6 16 00 13 56 16 00 E3 96 06 FE
67 80 00 00 93 82 00 00 EF F0 5F FB 13 85 05 00
67 80 02 00 33 05 A0 40 63 D8 05 00 B3 05 B0 40
6F F0 DF F9 B3 05 B0 40 93 82 00 00 EF F0 1F F9
33 05 A0 40 67 80 02 00 93 82 00 00 63 CA 05 00
63 4C 05 00 EF F0 9F F7 13 85 05 00 67 80 02 00
B3 05 B0 40 E3 58 05 FE 33 05 A0 40 EF F0 1F F6
33 05 B0 40 67 80 02 00
@000011A8
FD 00 00 00
@000011AC
B0 11 00 00

View File

@ -0,0 +1,410 @@
./test/test.om: file format elf32-littleriscv
Disassembly of section .rom:
00000000 <.rom>:
0: 00020137 lui sp,0x20
4: 040010ef jal ra,1044 <main>
8: 0ff00513 li a0,255
c: 000306b7 lui a3,0x30
10: 00a68223 sb a0,4(a3) # 30004 <__heap_start+0x2e004>
14: ff9ff06f j c <printInt-0xff4>
Disassembly of section .text:
00001000 <printInt>:
1000: 00001737 lui a4,0x1
1004: 1c072783 lw a5,448(a4) # 11c0 <__bss_end>
1008: 00f54533 xor a0,a0,a5
100c: 0ad50513 addi a0,a0,173
1010: 1ca72023 sw a0,448(a4)
1014: 00008067 ret
00001018 <printStr>:
1018: 00054783 lbu a5,0(a0)
101c: 02078263 beqz a5,1040 <printStr+0x28>
1020: 00001737 lui a4,0x1
1024: 1c072683 lw a3,448(a4) # 11c0 <__bss_end>
1028: 00d7c7b3 xor a5,a5,a3
102c: 20978793 addi a5,a5,521
1030: 1cf72023 sw a5,448(a4)
1034: 00150513 addi a0,a0,1
1038: 00054783 lbu a5,0(a0)
103c: fe0794e3 bnez a5,1024 <printStr+0xc>
1040: 00008067 ret
00001044 <main>:
1044: fe010113 addi sp,sp,-32 # 1ffe0 <__heap_start+0x1dfe0>
1048: 00112e23 sw ra,28(sp)
104c: 00812c23 sw s0,24(sp)
1050: 00912a23 sw s1,20(sp)
1054: 01212823 sw s2,16(sp)
1058: 01312623 sw s3,12(sp)
105c: 000017b7 lui a5,0x1
1060: 1ac7a903 lw s2,428(a5) # 11ac <__bss_start>
1064: 00400513 li a0,4
1068: f99ff0ef jal ra,1000 <printInt>
106c: 00100793 li a5,1
1070: 00f92023 sw a5,0(s2)
1074: 00200793 li a5,2
1078: 00f92223 sw a5,4(s2)
107c: 00300793 li a5,3
1080: 00f92423 sw a5,8(s2)
1084: 00400793 li a5,4
1088: 00f92623 sw a5,12(s2)
108c: 00090413 mv s0,s2
1090: 01090993 addi s3,s2,16
1094: 00090493 mv s1,s2
1098: 0004a503 lw a0,0(s1)
109c: f65ff0ef jal ra,1000 <printInt>
10a0: 00448493 addi s1,s1,4
10a4: ff349ae3 bne s1,s3,1098 <main+0x54>
10a8: 00092023 sw zero,0(s2)
10ac: 00092223 sw zero,4(s2)
10b0: 00092423 sw zero,8(s2)
10b4: 00092623 sw zero,12(s2)
10b8: 00042503 lw a0,0(s0)
10bc: f45ff0ef jal ra,1000 <printInt>
10c0: 00440413 addi s0,s0,4
10c4: fe899ae3 bne s3,s0,10b8 <main+0x74>
10c8: 0fd00593 li a1,253
10cc: 000017b7 lui a5,0x1
10d0: 1c07a503 lw a0,448(a5) # 11c0 <__bss_end>
10d4: 0a4000ef jal ra,1178 <__modsi3>
10d8: 01c12083 lw ra,28(sp)
10dc: 01812403 lw s0,24(sp)
10e0: 01412483 lw s1,20(sp)
10e4: 01012903 lw s2,16(sp)
10e8: 00c12983 lw s3,12(sp)
10ec: 02010113 addi sp,sp,32
10f0: 00008067 ret
000010f4 <__divsi3>:
10f4: 06054063 bltz a0,1154 <__umodsi3+0x10>
10f8: 0605c663 bltz a1,1164 <__umodsi3+0x20>
000010fc <__udivsi3>:
10fc: 00058613 mv a2,a1
1100: 00050593 mv a1,a0
1104: fff00513 li a0,-1
1108: 02060c63 beqz a2,1140 <__udivsi3+0x44>
110c: 00100693 li a3,1
1110: 00b67a63 bgeu a2,a1,1124 <__udivsi3+0x28>
1114: 00c05863 blez a2,1124 <__udivsi3+0x28>
1118: 00161613 slli a2,a2,0x1
111c: 00169693 slli a3,a3,0x1
1120: feb66ae3 bltu a2,a1,1114 <__udivsi3+0x18>
1124: 00000513 li a0,0
1128: 00c5e663 bltu a1,a2,1134 <__udivsi3+0x38>
112c: 40c585b3 sub a1,a1,a2
1130: 00d56533 or a0,a0,a3
1134: 0016d693 srli a3,a3,0x1
1138: 00165613 srli a2,a2,0x1
113c: fe0696e3 bnez a3,1128 <__udivsi3+0x2c>
1140: 00008067 ret
00001144 <__umodsi3>:
1144: 00008293 mv t0,ra
1148: fb5ff0ef jal ra,10fc <__udivsi3>
114c: 00058513 mv a0,a1
1150: 00028067 jr t0
1154: 40a00533 neg a0,a0
1158: 0005d863 bgez a1,1168 <__umodsi3+0x24>
115c: 40b005b3 neg a1,a1
1160: f9dff06f j 10fc <__udivsi3>
1164: 40b005b3 neg a1,a1
1168: 00008293 mv t0,ra
116c: f91ff0ef jal ra,10fc <__udivsi3>
1170: 40a00533 neg a0,a0
1174: 00028067 jr t0
00001178 <__modsi3>:
1178: 00008293 mv t0,ra
117c: 0005ca63 bltz a1,1190 <__modsi3+0x18>
1180: 00054c63 bltz a0,1198 <__modsi3+0x20>
1184: f79ff0ef jal ra,10fc <__udivsi3>
1188: 00058513 mv a0,a1
118c: 00028067 jr t0
1190: 40b005b3 neg a1,a1
1194: fe0558e3 bgez a0,1184 <__modsi3+0xc>
1198: 40a00533 neg a0,a0
119c: f61ff0ef jal ra,10fc <__udivsi3>
11a0: 40b00533 neg a0,a1
11a4: 00028067 jr t0
Disassembly of section .srodata:
000011a8 <Mod>:
11a8: 00fd addi ra,ra,31
...
Disassembly of section .sdata:
000011ac <pa>:
11ac: 11b0 addi a2,sp,232
...
Disassembly of section .bss:
000011b0 <a>:
...
Disassembly of section .sbss:
000011c0 <judgeResult>:
11c0: 0000 unimp
...
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 fmsub.d ft6,ft6,ft4,ft7,rmm
4: 2820 fld fs0,80(s0)
6: 29554e47 fmsub.s ft8,fa0,fs5,ft5,rmm
a: 3820 fld fs0,112(s0)
c: 332e fld ft6,232(sp)
e: 302e fld ft0,232(sp)
...
Disassembly of section .debug_line:
00000000 <.debug_line>:
0: 0164 addi s1,sp,140
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0045 c.nop 17
8: 0000 unimp
a: 0101 addi sp,sp,0
c: 000d0efb 0xd0efb
10: 0101 addi sp,sp,0
12: 0101 addi sp,sp,0
14: 0000 unimp
16: 0100 addi s0,sp,128
18: 0000 unimp
1a: 2e01 jal 32a <printInt-0xcd6>
1c: 2f2e fld ft10,200(sp)
1e: 2e2e fld ft8,200(sp)
20: 2f2e2e2f 0x2f2e2e2f
24: 2f2e fld ft10,200(sp)
26: 6972 flw fs2,28(sp)
28: 2d766373 csrrsi t1,0x2d7,12
2c: 2f636367 0x2f636367
30: 696c flw fa1,84(a0)
32: 6762 flw fa4,24(sp)
34: 632f6363 bltu t5,s2,65a <printInt-0x9a6>
38: 69666e6f jal t3,666ce <__heap_start+0x646ce>
3c: 69722f67 0x69722f67
40: 00766373 csrrsi t1,0x7,12
44: 6400 flw fs0,8(s0)
46: 7669 lui a2,0xffffa
48: 532e lw t1,232(sp)
4a: 0100 addi s0,sp,128
4c: 0000 unimp
4e: 0000 unimp
50: 0205 addi tp,tp,1
52: 10f4 addi a3,sp,108
54: 0000 unimp
56: 0100c403 lbu s0,16(ra)
5a: 04090103 lb sp,64(s2)
5e: 0100 addi s0,sp,128
60: 04090403 lb s0,64(s2)
64: 0100 addi s0,sp,128
66: 04090103 lb sp,64(s2)
6a: 0100 addi s0,sp,128
6c: 04090103 lb sp,64(s2)
70: 0100 addi s0,sp,128
72: 04090103 lb sp,64(s2)
76: 0100 addi s0,sp,128
78: 04090103 lb sp,64(s2)
7c: 0100 addi s0,sp,128
7e: 04090103 lb sp,64(s2)
82: 0100 addi s0,sp,128
84: 04090203 lb tp,64(s2)
88: 0100 addi s0,sp,128
8a: 04090103 lb sp,64(s2)
8e: 0100 addi s0,sp,128
90: 04090103 lb sp,64(s2)
94: 0100 addi s0,sp,128
96: 04090103 lb sp,64(s2)
9a: 0100 addi s0,sp,128
9c: 04090203 lb tp,64(s2)
a0: 0100 addi s0,sp,128
a2: 04090203 lb tp,64(s2)
a6: 0100 addi s0,sp,128
a8: 04090103 lb sp,64(s2)
ac: 0100 addi s0,sp,128
ae: 04090103 lb sp,64(s2)
b2: 0100 addi s0,sp,128
b4: 04090203 lb tp,64(s2)
b8: 0100 addi s0,sp,128
ba: 04090103 lb sp,64(s2)
be: 0100 addi s0,sp,128
c0: 04090103 lb sp,64(s2)
c4: 0100 addi s0,sp,128
c6: 04090203 lb tp,64(s2)
ca: 0100 addi s0,sp,128
cc: 04090503 lb a0,64(s2)
d0: 0100 addi s0,sp,128
d2: 04090103 lb sp,64(s2)
d6: 0100 addi s0,sp,128
d8: 04090103 lb sp,64(s2)
dc: 0100 addi s0,sp,128
de: 04090103 lb sp,64(s2)
e2: 0100 addi s0,sp,128
e4: 04090503 lb a0,64(s2)
e8: 0100 addi s0,sp,128
ea: 04090103 lb sp,64(s2)
ee: 0100 addi s0,sp,128
f0: 04090103 lb sp,64(s2)
f4: 0100 addi s0,sp,128
f6: 04090103 lb sp,64(s2)
fa: 0100 addi s0,sp,128
fc: 04090203 lb tp,64(s2)
100: 0100 addi s0,sp,128
102: 04090203 lb tp,64(s2)
106: 0100 addi s0,sp,128
108: 04090103 lb sp,64(s2)
10c: 0100 addi s0,sp,128
10e: 04090103 lb sp,64(s2)
112: 0100 addi s0,sp,128
114: 04090103 lb sp,64(s2)
118: 0100 addi s0,sp,128
11a: 04090403 lb s0,64(s2)
11e: 0100 addi s0,sp,128
120: 04090103 lb sp,64(s2)
124: 0100 addi s0,sp,128
126: 04090103 lb sp,64(s2)
12a: 0100 addi s0,sp,128
12c: 04090203 lb tp,64(s2)
130: 0100 addi s0,sp,128
132: 04090103 lb sp,64(s2)
136: 0100 addi s0,sp,128
138: 04090103 lb sp,64(s2)
13c: 0100 addi s0,sp,128
13e: 04090203 lb tp,64(s2)
142: 0100 addi s0,sp,128
144: 04090103 lb sp,64(s2)
148: 0100 addi s0,sp,128
14a: 04090203 lb tp,64(s2)
14e: 0100 addi s0,sp,128
150: 04090103 lb sp,64(s2)
154: 0100 addi s0,sp,128
156: 04090103 lb sp,64(s2)
15a: 0100 addi s0,sp,128
15c: 04090103 lb sp,64(s2)
160: 0100 addi s0,sp,128
162: 0409 addi s0,s0,2
164: 0000 unimp
166: 0101 addi sp,sp,0
Disassembly of section .debug_info:
00000000 <.debug_info>:
0: 0022 c.slli zero,0x8
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0104 addi s1,sp,128
c: 0000 unimp
e: 0000 unimp
10: 10f4 addi a3,sp,108
12: 0000 unimp
14: 11a8 addi a0,sp,232
16: 0000 unimp
18: 0000 unimp
1a: 0000 unimp
1c: 0000002f 0x2f
20: 0088 addi a0,sp,64
22: 0000 unimp
24: 8001 c.srli64 s0
Disassembly of section .debug_abbrev:
00000000 <.debug_abbrev>:
0: 1101 addi sp,sp,-32
2: 1000 addi s0,sp,32
4: 1106 slli sp,sp,0x21
6: 1201 addi tp,tp,-32
8: 0301 addi t1,t1,0
a: 1b0e slli s6,s6,0x23
c: 250e fld fa0,192(sp)
e: 130e slli t1,t1,0x23
10: 0005 c.nop 1
...
Disassembly of section .debug_aranges:
00000000 <.debug_aranges>:
0: 001c 0x1c
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0004 0x4
c: 0000 unimp
e: 0000 unimp
10: 10f4 addi a3,sp,108
12: 0000 unimp
14: 00b4 addi a3,sp,72
...
Disassembly of section .debug_str:
00000000 <.debug_str>:
0: 2e2e fld ft8,200(sp)
2: 2f2e2e2f 0x2f2e2e2f
6: 2e2e fld ft8,200(sp)
8: 722f2e2f 0x722f2e2f
c: 7369 lui t1,0xffffa
e: 672d7663 bgeu s10,s2,67a <printInt-0x986>
12: 6c2f6363 bltu t5,sp,6d8 <printInt-0x928>
16: 6269 lui tp,0x1a
18: 2f636367 0x2f636367
1c: 666e6f63 bltu t3,t1,69a <printInt-0x966>
20: 6769 lui a4,0x1a
22: 7369722f 0x7369722f
26: 642f7663 bgeu t5,sp,672 <printInt-0x98e>
2a: 7669 lui a2,0xffffa
2c: 532e lw t1,232(sp)
2e: 2f00 fld fs0,24(a4)
30: 6f68 flw fa0,92(a4)
32: 656d lui a0,0x1b
34: 2d75772f 0x2d75772f
38: 6971 lui s2,0x1c
3a: 676e flw fa4,216(sp)
3c: 312d jal fffffc66 <__heap_start+0xffffdc66>
3e: 3735 jal ffffff6a <__heap_start+0xffffdf6a>
40: 7369722f 0x7369722f
44: 672d7663 bgeu s10,s2,6b0 <printInt-0x950>
48: 756e flw fa0,248(sp)
4a: 742d lui s0,0xfffeb
4c: 636c6f6f jal t5,c6682 <__heap_start+0xc4682>
50: 6168 flw fa0,68(a0)
52: 6e69 lui t3,0x1a
54: 6975622f 0x6975622f
58: 646c flw fa1,76(s0)
5a: 672d lui a4,0xb
5c: 6e2d6363 bltu s10,sp,742 <printInt-0x8be>
60: 7765 lui a4,0xffff9
62: 696c flw fa1,84(a0)
64: 2d62 fld fs10,24(sp)
66: 67617473 csrrci s0,0x676,2
6a: 3265 jal fffffa12 <__heap_start+0xffffda12>
6c: 7369722f 0x7369722f
70: 32337663 bgeu t1,gp,39c <printInt-0xc64>
74: 752d lui a0,0xfffeb
76: 6b6e flw fs6,216(sp)
78: 6f6e flw ft10,216(sp)
7a: 652d6e77 0x652d6e77
7e: 666c flw fa1,76(a2)
80: 62696c2f 0x62696c2f
84: 00636367 0x636367
88: 20554e47 fmsub.s ft8,fa0,ft5,ft4,rmm
8c: 5341 li t1,-16
8e: 3220 fld fs0,96(a2)
90: 332e fld ft6,232(sp)
92: 2e31 jal 3ae <printInt-0xc52>
94: 0031 c.nop 12

View File

@ -0,0 +1,29 @@
#include "io.inc"
int main() {
int a[100][100];
int i;
int j;
int sum = 0;
for (i = 0; i < 100; i++)
for (j = 0; j < 100; j++)
a[i][j] = 0;
int quotient;
int remainder;
for (i = 0; i < 100; i++)
if (i > 20 && i < 80) {
for (j = 0; j < 100; j++)
if (j > 5 || i < 90) {
quotient = j * 4 / 100;
remainder = j * 4 % 100;
a[i + quotient][remainder] = j + (100 - 1 + 1 - 1 + 1) / 2;
}
}
for (i = 0; i < 100; i++)
for (j = 0; j < 100; j++)
sum = sum + a[i][j];
printInt(sum);
return judgeResult % Mod; // 88
}

View File

@ -0,0 +1,46 @@
@00000000
37 01 02 00 EF 10 00 04 13 05 F0 0F B7 06 03 00
23 82 A6 00 6F F0 9F FF
@00001000
37 17 00 00 83 27 C7 27 33 45 F5 00 13 05 D5 0A
23 2E A7 26 67 80 00 00 83 47 05 00 63 82 07 02
37 17 00 00 83 26 C7 27 B3 C7 D7 00 93 87 97 20
23 2E F7 26 13 05 15 00 83 47 05 00 E3 94 07 FE
67 80 00 00 13 01 01 81 23 26 11 7E 23 24 81 7E
23 22 91 7E 23 20 21 7F 23 2E 31 7D 23 2C 41 7D
23 2A 51 7D 23 28 61 7D 23 26 71 7D 23 24 81 7D
37 73 FF FF 13 03 03 B8 33 01 61 00 37 64 FF FF
37 A7 00 00 93 07 07 C4 B3 87 27 00 33 84 87 00
13 04 04 55 93 07 07 DD 33 09 F1 00 13 07 04 00
6F 00 C0 00 13 07 07 19 63 0C 27 01 93 07 07 E7
23 A0 07 00 93 87 47 00 E3 9C E7 FE 6F F0 9F FE
93 04 10 00 13 0A A0 03 93 09 30 06 37 6B FF FF
B7 A7 00 00 93 87 07 C4 B3 87 27 00 33 8B 67 01
6F 00 C0 05 93 0B 00 00 93 05 90 01 13 85 0B 00
EF 00 40 0D 33 0C 55 01 93 05 40 06 13 95 2B 00
EF 00 80 14 93 17 1C 00 B3 87 87 01 93 97 37 00
B3 87 87 01 93 97 27 00 B3 87 A7 00 93 97 27 00
B3 07 FB 00 13 87 2B 03 23 A0 E7 3C 93 8B 1B 00
93 07 40 06 E3 9A FB FA 93 84 14 00 93 8A F4 FF
93 87 A4 FE E3 70 FA FA E3 D8 99 FE 13 05 00 00
6F 00 C0 00 13 04 04 19 63 0E 24 01 93 07 04 E7
03 A7 07 00 33 05 E5 00 93 87 47 00 E3 9A 87 FE
6F F0 5F FE EF F0 DF E8 93 05 D0 0F B7 17 00 00
03 A5 C7 27 EF 00 40 0C 37 93 00 00 13 03 03 48
33 01 61 00 83 20 C1 7E 03 24 81 7E 83 24 41 7E
03 29 01 7E 83 29 C1 7D 03 2A 81 7D 83 2A 41 7D
03 2B 01 7D 83 2B C1 7C 03 2C 81 7C 13 01 01 7F
67 80 00 00 63 40 05 06 63 C6 05 06 13 86 05 00
93 05 05 00 13 05 F0 FF 63 0C 06 02 93 06 10 00
63 7A B6 00 63 58 C0 00 13 16 16 00 93 96 16 00
E3 6A B6 FE 13 05 00 00 63 E6 C5 00 B3 85 C5 40
33 65 D5 00 93 D6 16 00 13 56 16 00 E3 96 06 FE
67 80 00 00 93 82 00 00 EF F0 5F FB 13 85 05 00
67 80 02 00 33 05 A0 40 63 D8 05 00 B3 05 B0 40
6F F0 DF F9 B3 05 B0 40 93 82 00 00 EF F0 1F F9
33 05 A0 40 67 80 02 00 93 82 00 00 63 CA 05 00
63 4C 05 00 EF F0 9F F7 13 85 05 00 67 80 02 00
B3 05 B0 40 E3 58 05 FE 33 05 A0 40 EF F0 1F F6
33 05 B0 40 67 80 02 00
@00001278
FD 00 00 00

View File

@ -0,0 +1,451 @@
./test/test.om: file format elf32-littleriscv
Disassembly of section .rom:
00000000 <.rom>:
0: 00020137 lui sp,0x20
4: 040010ef jal ra,1044 <main>
8: 0ff00513 li a0,255
c: 000306b7 lui a3,0x30
10: 00a68223 sb a0,4(a3) # 30004 <__heap_start+0x2e004>
14: ff9ff06f j c <printInt-0xff4>
Disassembly of section .text:
00001000 <printInt>:
1000: 00001737 lui a4,0x1
1004: 27c72783 lw a5,636(a4) # 127c <__bss_end>
1008: 00f54533 xor a0,a0,a5
100c: 0ad50513 addi a0,a0,173
1010: 26a72e23 sw a0,636(a4)
1014: 00008067 ret
00001018 <printStr>:
1018: 00054783 lbu a5,0(a0)
101c: 02078263 beqz a5,1040 <printStr+0x28>
1020: 00001737 lui a4,0x1
1024: 27c72683 lw a3,636(a4) # 127c <__bss_end>
1028: 00d7c7b3 xor a5,a5,a3
102c: 20978793 addi a5,a5,521
1030: 26f72e23 sw a5,636(a4)
1034: 00150513 addi a0,a0,1
1038: 00054783 lbu a5,0(a0)
103c: fe0794e3 bnez a5,1024 <printStr+0xc>
1040: 00008067 ret
00001044 <main>:
1044: 81010113 addi sp,sp,-2032 # 1f810 <__heap_start+0x1d810>
1048: 7e112623 sw ra,2028(sp)
104c: 7e812423 sw s0,2024(sp)
1050: 7e912223 sw s1,2020(sp)
1054: 7f212023 sw s2,2016(sp)
1058: 7d312e23 sw s3,2012(sp)
105c: 7d412c23 sw s4,2008(sp)
1060: 7d512a23 sw s5,2004(sp)
1064: 7d612823 sw s6,2000(sp)
1068: 7d712623 sw s7,1996(sp)
106c: 7d812423 sw s8,1992(sp)
1070: ffff7337 lui t1,0xffff7
1074: b8030313 addi t1,t1,-1152 # ffff6b80 <__heap_start+0xffff4b80>
1078: 00610133 add sp,sp,t1
107c: ffff6437 lui s0,0xffff6
1080: 0000a737 lui a4,0xa
1084: c4070793 addi a5,a4,-960 # 9c40 <__heap_start+0x7c40>
1088: 002787b3 add a5,a5,sp
108c: 00878433 add s0,a5,s0
1090: 55040413 addi s0,s0,1360 # ffff6550 <__heap_start+0xffff4550>
1094: dd070793 addi a5,a4,-560
1098: 00f10933 add s2,sp,a5
109c: 00040713 mv a4,s0
10a0: 00c0006f j 10ac <main+0x68>
10a4: 19070713 addi a4,a4,400
10a8: 01270c63 beq a4,s2,10c0 <main+0x7c>
10ac: e7070793 addi a5,a4,-400
10b0: 0007a023 sw zero,0(a5)
10b4: 00478793 addi a5,a5,4
10b8: fee79ce3 bne a5,a4,10b0 <main+0x6c>
10bc: fe9ff06f j 10a4 <main+0x60>
10c0: 00100493 li s1,1
10c4: 03a00a13 li s4,58
10c8: 06300993 li s3,99
10cc: ffff6b37 lui s6,0xffff6
10d0: 0000a7b7 lui a5,0xa
10d4: c4078793 addi a5,a5,-960 # 9c40 <__heap_start+0x7c40>
10d8: 002787b3 add a5,a5,sp
10dc: 01678b33 add s6,a5,s6
10e0: 05c0006f j 113c <main+0xf8>
10e4: 00000b93 li s7,0
10e8: 01900593 li a1,25
10ec: 000b8513 mv a0,s7
10f0: 0d4000ef jal ra,11c4 <__divsi3>
10f4: 01550c33 add s8,a0,s5
10f8: 06400593 li a1,100
10fc: 002b9513 slli a0,s7,0x2
1100: 148000ef jal ra,1248 <__modsi3>
1104: 001c1793 slli a5,s8,0x1
1108: 018787b3 add a5,a5,s8
110c: 00379793 slli a5,a5,0x3
1110: 018787b3 add a5,a5,s8
1114: 00279793 slli a5,a5,0x2
1118: 00a787b3 add a5,a5,a0
111c: 00279793 slli a5,a5,0x2
1120: 00fb07b3 add a5,s6,a5
1124: 032b8713 addi a4,s7,50
1128: 3ce7a023 sw a4,960(a5)
112c: 001b8b93 addi s7,s7,1
1130: 06400793 li a5,100
1134: fafb9ae3 bne s7,a5,10e8 <main+0xa4>
1138: 00148493 addi s1,s1,1
113c: fff48a93 addi s5,s1,-1
1140: fea48793 addi a5,s1,-22
1144: fafa70e3 bgeu s4,a5,10e4 <main+0xa0>
1148: fe99d8e3 bge s3,s1,1138 <main+0xf4>
114c: 00000513 li a0,0
1150: 00c0006f j 115c <main+0x118>
1154: 19040413 addi s0,s0,400
1158: 01240e63 beq s0,s2,1174 <main+0x130>
115c: e7040793 addi a5,s0,-400
1160: 0007a703 lw a4,0(a5)
1164: 00e50533 add a0,a0,a4
1168: 00478793 addi a5,a5,4
116c: fe879ae3 bne a5,s0,1160 <main+0x11c>
1170: fe5ff06f j 1154 <main+0x110>
1174: e8dff0ef jal ra,1000 <printInt>
1178: 0fd00593 li a1,253
117c: 000017b7 lui a5,0x1
1180: 27c7a503 lw a0,636(a5) # 127c <__bss_end>
1184: 0c4000ef jal ra,1248 <__modsi3>
1188: 00009337 lui t1,0x9
118c: 48030313 addi t1,t1,1152 # 9480 <__heap_start+0x7480>
1190: 00610133 add sp,sp,t1
1194: 7ec12083 lw ra,2028(sp)
1198: 7e812403 lw s0,2024(sp)
119c: 7e412483 lw s1,2020(sp)
11a0: 7e012903 lw s2,2016(sp)
11a4: 7dc12983 lw s3,2012(sp)
11a8: 7d812a03 lw s4,2008(sp)
11ac: 7d412a83 lw s5,2004(sp)
11b0: 7d012b03 lw s6,2000(sp)
11b4: 7cc12b83 lw s7,1996(sp)
11b8: 7c812c03 lw s8,1992(sp)
11bc: 7f010113 addi sp,sp,2032
11c0: 00008067 ret
000011c4 <__divsi3>:
11c4: 06054063 bltz a0,1224 <__umodsi3+0x10>
11c8: 0605c663 bltz a1,1234 <__umodsi3+0x20>
000011cc <__udivsi3>:
11cc: 00058613 mv a2,a1
11d0: 00050593 mv a1,a0
11d4: fff00513 li a0,-1
11d8: 02060c63 beqz a2,1210 <__udivsi3+0x44>
11dc: 00100693 li a3,1
11e0: 00b67a63 bgeu a2,a1,11f4 <__udivsi3+0x28>
11e4: 00c05863 blez a2,11f4 <__udivsi3+0x28>
11e8: 00161613 slli a2,a2,0x1
11ec: 00169693 slli a3,a3,0x1
11f0: feb66ae3 bltu a2,a1,11e4 <__udivsi3+0x18>
11f4: 00000513 li a0,0
11f8: 00c5e663 bltu a1,a2,1204 <__udivsi3+0x38>
11fc: 40c585b3 sub a1,a1,a2
1200: 00d56533 or a0,a0,a3
1204: 0016d693 srli a3,a3,0x1
1208: 00165613 srli a2,a2,0x1
120c: fe0696e3 bnez a3,11f8 <__udivsi3+0x2c>
1210: 00008067 ret
00001214 <__umodsi3>:
1214: 00008293 mv t0,ra
1218: fb5ff0ef jal ra,11cc <__udivsi3>
121c: 00058513 mv a0,a1
1220: 00028067 jr t0
1224: 40a00533 neg a0,a0
1228: 0005d863 bgez a1,1238 <__umodsi3+0x24>
122c: 40b005b3 neg a1,a1
1230: f9dff06f j 11cc <__udivsi3>
1234: 40b005b3 neg a1,a1
1238: 00008293 mv t0,ra
123c: f91ff0ef jal ra,11cc <__udivsi3>
1240: 40a00533 neg a0,a0
1244: 00028067 jr t0
00001248 <__modsi3>:
1248: 00008293 mv t0,ra
124c: 0005ca63 bltz a1,1260 <__modsi3+0x18>
1250: 00054c63 bltz a0,1268 <__modsi3+0x20>
1254: f79ff0ef jal ra,11cc <__udivsi3>
1258: 00058513 mv a0,a1
125c: 00028067 jr t0
1260: 40b005b3 neg a1,a1
1264: fe0558e3 bgez a0,1254 <__modsi3+0xc>
1268: 40a00533 neg a0,a0
126c: f61ff0ef jal ra,11cc <__udivsi3>
1270: 40b00533 neg a0,a1
1274: 00028067 jr t0
Disassembly of section .srodata:
00001278 <Mod>:
1278: 00fd addi ra,ra,31
...
Disassembly of section .sbss:
0000127c <judgeResult>:
127c: 0000 unimp
...
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 fmsub.d ft6,ft6,ft4,ft7,rmm
4: 2820 fld fs0,80(s0)
6: 29554e47 fmsub.s ft8,fa0,fs5,ft5,rmm
a: 3820 fld fs0,112(s0)
c: 332e fld ft6,232(sp)
e: 302e fld ft0,232(sp)
...
Disassembly of section .debug_line:
00000000 <.debug_line>:
0: 0164 addi s1,sp,140
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0045 c.nop 17
8: 0000 unimp
a: 0101 addi sp,sp,0
c: 000d0efb 0xd0efb
10: 0101 addi sp,sp,0
12: 0101 addi sp,sp,0
14: 0000 unimp
16: 0100 addi s0,sp,128
18: 0000 unimp
1a: 2e01 jal 32a <printInt-0xcd6>
1c: 2f2e fld ft10,200(sp)
1e: 2e2e fld ft8,200(sp)
20: 2f2e2e2f 0x2f2e2e2f
24: 2f2e fld ft10,200(sp)
26: 6972 flw fs2,28(sp)
28: 2d766373 csrrsi t1,0x2d7,12
2c: 2f636367 0x2f636367
30: 696c flw fa1,84(a0)
32: 6762 flw fa4,24(sp)
34: 632f6363 bltu t5,s2,65a <printInt-0x9a6>
38: 69666e6f jal t3,666ce <__heap_start+0x646ce>
3c: 69722f67 0x69722f67
40: 00766373 csrrsi t1,0x7,12
44: 6400 flw fs0,8(s0)
46: 7669 lui a2,0xffffa
48: 532e lw t1,232(sp)
4a: 0100 addi s0,sp,128
4c: 0000 unimp
4e: 0000 unimp
50: 0205 addi tp,tp,1
52: 11c4 addi s1,sp,228
54: 0000 unimp
56: 0100c403 lbu s0,16(ra)
5a: 04090103 lb sp,64(s2)
5e: 0100 addi s0,sp,128
60: 04090403 lb s0,64(s2)
64: 0100 addi s0,sp,128
66: 04090103 lb sp,64(s2)
6a: 0100 addi s0,sp,128
6c: 04090103 lb sp,64(s2)
70: 0100 addi s0,sp,128
72: 04090103 lb sp,64(s2)
76: 0100 addi s0,sp,128
78: 04090103 lb sp,64(s2)
7c: 0100 addi s0,sp,128
7e: 04090103 lb sp,64(s2)
82: 0100 addi s0,sp,128
84: 04090203 lb tp,64(s2)
88: 0100 addi s0,sp,128
8a: 04090103 lb sp,64(s2)
8e: 0100 addi s0,sp,128
90: 04090103 lb sp,64(s2)
94: 0100 addi s0,sp,128
96: 04090103 lb sp,64(s2)
9a: 0100 addi s0,sp,128
9c: 04090203 lb tp,64(s2)
a0: 0100 addi s0,sp,128
a2: 04090203 lb tp,64(s2)
a6: 0100 addi s0,sp,128
a8: 04090103 lb sp,64(s2)
ac: 0100 addi s0,sp,128
ae: 04090103 lb sp,64(s2)
b2: 0100 addi s0,sp,128
b4: 04090203 lb tp,64(s2)
b8: 0100 addi s0,sp,128
ba: 04090103 lb sp,64(s2)
be: 0100 addi s0,sp,128
c0: 04090103 lb sp,64(s2)
c4: 0100 addi s0,sp,128
c6: 04090203 lb tp,64(s2)
ca: 0100 addi s0,sp,128
cc: 04090503 lb a0,64(s2)
d0: 0100 addi s0,sp,128
d2: 04090103 lb sp,64(s2)
d6: 0100 addi s0,sp,128
d8: 04090103 lb sp,64(s2)
dc: 0100 addi s0,sp,128
de: 04090103 lb sp,64(s2)
e2: 0100 addi s0,sp,128
e4: 04090503 lb a0,64(s2)
e8: 0100 addi s0,sp,128
ea: 04090103 lb sp,64(s2)
ee: 0100 addi s0,sp,128
f0: 04090103 lb sp,64(s2)
f4: 0100 addi s0,sp,128
f6: 04090103 lb sp,64(s2)
fa: 0100 addi s0,sp,128
fc: 04090203 lb tp,64(s2)
100: 0100 addi s0,sp,128
102: 04090203 lb tp,64(s2)
106: 0100 addi s0,sp,128
108: 04090103 lb sp,64(s2)
10c: 0100 addi s0,sp,128
10e: 04090103 lb sp,64(s2)
112: 0100 addi s0,sp,128
114: 04090103 lb sp,64(s2)
118: 0100 addi s0,sp,128
11a: 04090403 lb s0,64(s2)
11e: 0100 addi s0,sp,128
120: 04090103 lb sp,64(s2)
124: 0100 addi s0,sp,128
126: 04090103 lb sp,64(s2)
12a: 0100 addi s0,sp,128
12c: 04090203 lb tp,64(s2)
130: 0100 addi s0,sp,128
132: 04090103 lb sp,64(s2)
136: 0100 addi s0,sp,128
138: 04090103 lb sp,64(s2)
13c: 0100 addi s0,sp,128
13e: 04090203 lb tp,64(s2)
142: 0100 addi s0,sp,128
144: 04090103 lb sp,64(s2)
148: 0100 addi s0,sp,128
14a: 04090203 lb tp,64(s2)
14e: 0100 addi s0,sp,128
150: 04090103 lb sp,64(s2)
154: 0100 addi s0,sp,128
156: 04090103 lb sp,64(s2)
15a: 0100 addi s0,sp,128
15c: 04090103 lb sp,64(s2)
160: 0100 addi s0,sp,128
162: 0409 addi s0,s0,2
164: 0000 unimp
166: 0101 addi sp,sp,0
Disassembly of section .debug_info:
00000000 <.debug_info>:
0: 0022 c.slli zero,0x8
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0104 addi s1,sp,128
c: 0000 unimp
e: 0000 unimp
10: 11c4 addi s1,sp,228
12: 0000 unimp
14: 1278 addi a4,sp,300
16: 0000 unimp
18: 0000 unimp
1a: 0000 unimp
1c: 0000002f 0x2f
20: 0088 addi a0,sp,64
22: 0000 unimp
24: 8001 c.srli64 s0
Disassembly of section .debug_abbrev:
00000000 <.debug_abbrev>:
0: 1101 addi sp,sp,-32
2: 1000 addi s0,sp,32
4: 1106 slli sp,sp,0x21
6: 1201 addi tp,tp,-32
8: 0301 addi t1,t1,0
a: 1b0e slli s6,s6,0x23
c: 250e fld fa0,192(sp)
e: 130e slli t1,t1,0x23
10: 0005 c.nop 1
...
Disassembly of section .debug_aranges:
00000000 <.debug_aranges>:
0: 001c 0x1c
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0004 0x4
c: 0000 unimp
e: 0000 unimp
10: 11c4 addi s1,sp,228
12: 0000 unimp
14: 00b4 addi a3,sp,72
...
Disassembly of section .debug_str:
00000000 <.debug_str>:
0: 2e2e fld ft8,200(sp)
2: 2f2e2e2f 0x2f2e2e2f
6: 2e2e fld ft8,200(sp)
8: 722f2e2f 0x722f2e2f
c: 7369 lui t1,0xffffa
e: 672d7663 bgeu s10,s2,67a <printInt-0x986>
12: 6c2f6363 bltu t5,sp,6d8 <printInt-0x928>
16: 6269 lui tp,0x1a
18: 2f636367 0x2f636367
1c: 666e6f63 bltu t3,t1,69a <printInt-0x966>
20: 6769 lui a4,0x1a
22: 7369722f 0x7369722f
26: 642f7663 bgeu t5,sp,672 <printInt-0x98e>
2a: 7669 lui a2,0xffffa
2c: 532e lw t1,232(sp)
2e: 2f00 fld fs0,24(a4)
30: 6f68 flw fa0,92(a4)
32: 656d lui a0,0x1b
34: 2d75772f 0x2d75772f
38: 6971 lui s2,0x1c
3a: 676e flw fa4,216(sp)
3c: 312d jal fffffc66 <__heap_start+0xffffdc66>
3e: 3735 jal ffffff6a <__heap_start+0xffffdf6a>
40: 7369722f 0x7369722f
44: 672d7663 bgeu s10,s2,6b0 <printInt-0x950>
48: 756e flw fa0,248(sp)
4a: 742d lui s0,0xfffeb
4c: 636c6f6f jal t5,c6682 <__heap_start+0xc4682>
50: 6168 flw fa0,68(a0)
52: 6e69 lui t3,0x1a
54: 6975622f 0x6975622f
58: 646c flw fa1,76(s0)
5a: 672d lui a4,0xb
5c: 6e2d6363 bltu s10,sp,742 <printInt-0x8be>
60: 7765 lui a4,0xffff9
62: 696c flw fa1,84(a0)
64: 2d62 fld fs10,24(sp)
66: 67617473 csrrci s0,0x676,2
6a: 3265 jal fffffa12 <__heap_start+0xffffda12>
6c: 7369722f 0x7369722f
70: 32337663 bgeu t1,gp,39c <printInt-0xc64>
74: 752d lui a0,0xfffeb
76: 6b6e flw fs6,216(sp)
78: 6f6e flw ft10,216(sp)
7a: 652d6e77 0x652d6e77
7e: 666c flw fa1,76(a2)
80: 62696c2f 0x62696c2f
84: 00636367 0x636367
88: 20554e47 fmsub.s ft8,fa0,ft5,ft4,rmm
8c: 5341 li t1,-16
8e: 3220 fld fs0,96(a2)
90: 332e fld ft6,232(sp)
92: 2e31 jal 3ae <printInt-0xc52>
94: 0031 c.nop 12

128
test/testcases/bulgarian.c Normal file
View File

@ -0,0 +1,128 @@
#include "io.inc"
// Target: Simulate a Bulgarian-solitaire game.
// Possible opitimization: Dead code elimination, common expression, inline
// function, loop unrolling, etc. REMARKS: A funny game. If you like, you can
// try to prove that when n=1+2+..+i(i>0), the game will always stop
// and converge to the only solution: {1,2,...i}. :)
int n;
int h;
int now;
int a[100];
int A = 48271;
int M = 2147483647;
int Q;
int R;
int seed = 1;
int random() {
int tempseed = A * (seed % Q) - R * (seed / Q);
if (tempseed >= 0)
seed = tempseed;
else
seed = tempseed + M;
return seed;
}
void initialize(int val) { seed = val; }
void swap(int x, int y) {
int temp = a[x];
a[x] = a[y];
a[y] = temp;
}
int pd(int x) {
for (; h <= x; ++h)
if (x == h * (h + 1) / 2)
return 1;
return 0;
}
void show() {
int i;
for (i = 0; i < now; ++i) {
printInt(a[i]);
}
}
int win() {
int i;
int j;
int b[100];
int temp;
if (now != h)
return 0;
for (j = 0; j < now; ++j)
b[j] = a[j];
for (i = 0; i < now - 1; ++i)
for (j = i + 1; j < now; ++j)
if (b[i] > b[j]) {
temp = b[i];
b[i] = b[j];
b[j] = temp;
}
for (i = 0; i < now; ++i)
if (b[i] != i + 1)
return 0;
return 1;
}
void merge() {
int i;
for (i = 0; i < now; ++i)
if (a[i] == 0) {
int j;
for (j = i + 1; j < now; ++j)
if (a[j] != 0) {
swap(i, j);
break;
}
}
for (i = 0; i < now; ++i)
if (a[i] == 0) {
now = i;
break;
}
}
void move() {
int i = 0;
for (; i < now;) {
--a[i];
i = i + 1;
}
a[now] = now;
now++;
}
int main() {
int i = 0;
int temp = 0;
int count = 0;
n = 3 * 7 * 10;
h = 0;
Q = M / A;
R = M % A;
if (!pd(n)) {
// println("Sorry, the number n must be a number s.t. there exists i "
// "satisfying n=1+2+...+i");
return 1;
}
// println("Let's start!");
initialize(3654898);
now = random() % 10 + 1;
printInt(now);
for (; i < now - 1; ++i) {
a[i] = random() % 10 + 1;
while (a[i] + temp > n)
a[i] = random() % 10 + 1;
temp = temp + a[i];
}
a[now - 1] = n - temp;
show();
merge();
while (!win()) {
// print("step ");
printInt(++count);
// println(":");
move();
merge();
show();
}
// print("Total: ");
printInt(count);
// println(" step(s)");
return judgeResult % Mod; // 159
}

View File

@ -0,0 +1,117 @@
@00000000
37 01 02 00 EF 10 80 42 13 05 F0 0F B7 06 03 00
23 82 A6 00 6F F0 9F FF
@00001000
37 27 00 00 83 27 47 88 33 45 F5 00 13 05 D5 0A
23 22 A7 88 67 80 00 00 83 47 05 00 63 82 07 02
37 27 00 00 83 26 47 88 B3 C7 D7 00 93 87 97 20
23 22 F7 88 13 05 15 00 83 47 05 00 E3 94 07 FE
67 80 00 00 13 01 01 FF 23 26 11 00 23 24 81 00
23 22 91 00 23 20 21 01 B7 17 00 00 83 A4 47 6D
B7 17 00 00 03 A9 87 6E 93 05 09 00 13 85 04 00
EF 00 00 63 B7 17 00 00 83 A5 C7 6D EF 00 C0 57
13 04 05 00 93 05 09 00 13 85 04 00 EF 00 00 59
B7 17 00 00 83 A5 C7 6E EF 00 00 56 33 05 A4 40
63 42 05 02 B7 17 00 00 23 AA A7 6C 83 20 C1 00
03 24 81 00 83 24 41 00 03 29 01 00 13 01 01 01
67 80 00 00 B7 17 00 00 83 A7 87 6D 33 05 F5 00
6F F0 5F FD B7 17 00 00 23 AA A7 6C 67 80 00 00
B7 17 00 00 93 87 47 6F 13 15 25 00 33 85 A7 00
03 27 05 00 93 95 25 00 B3 87 B7 00 83 A6 07 00
23 20 D5 00 23 A0 E7 00 67 80 00 00 13 01 01 FF
23 26 11 00 23 24 81 00 23 22 91 00 23 20 21 01
13 09 05 00 B7 17 00 00 03 A5 07 6F 63 40 A9 08
13 04 15 00 93 05 04 00 EF 00 00 4C 93 57 F5 01
33 85 A7 00 13 55 15 40 63 06 A9 06 63 4E 89 02
93 04 14 00 93 05 04 00 13 85 04 00 EF 00 C0 49
93 57 F5 01 B3 87 A7 00 93 D7 17 40 63 86 27 01
13 84 04 00 6F F0 9F FD B7 17 00 00 23 A8 87 6E
13 05 10 00 6F 00 00 01 B7 17 00 00 23 A8 87 6E
13 05 00 00 83 20 C1 00 03 24 81 00 83 24 41 00
03 29 01 00 13 01 01 01 67 80 00 00 13 05 00 00
6F F0 5F FE 13 05 10 00 6F F0 DF FD B7 17 00 00
83 A7 07 6E 63 5C F0 04 13 01 01 FF 23 26 11 00
23 24 81 00 23 22 91 00 23 20 21 01 37 14 00 00
13 04 44 6F 93 04 00 00 37 19 00 00 03 25 04 00
EF F0 1F E1 93 84 14 00 13 04 44 00 83 27 09 6E
E3 C6 F4 FE 83 20 C1 00 03 24 81 00 83 24 41 00
03 29 01 00 13 01 01 01 67 80 00 00 67 80 00 00
B7 17 00 00 83 A8 07 6E B7 17 00 00 83 A7 07 6F
13 05 00 00 63 96 F8 0C 13 01 01 E7 63 56 10 03
B7 17 00 00 93 87 47 6F 13 07 01 00 13 96 28 00
33 06 F6 00 83 A6 07 00 23 20 D7 00 93 87 47 00
13 07 47 00 E3 98 C7 FE 13 08 41 00 13 8E 08 00
93 95 28 00 B3 85 25 00 13 06 08 00 13 05 00 00
13 83 F8 FF 6F 00 80 02 93 87 47 00 63 8E B7 00
03 27 C6 FF 83 A6 07 00 E3 D8 E6 FE 23 2E D6 FE
23 A0 E7 00 6F F0 5F FE 13 06 46 00 63 5A 65 00
13 05 15 00 E3 5A 15 FF 93 07 06 00 6F F0 5F FD
63 58 10 03 03 25 01 00 93 07 10 00 63 16 F5 02
63 8C C7 01 03 27 08 00 93 87 17 00 13 08 48 00
E3 08 F7 FE 13 05 00 00 13 01 01 19 67 80 00 00
13 05 10 00 6F F0 5F FF 13 05 00 00 6F F0 DF FE
67 80 00 00 B7 17 00 00 03 A7 07 6E 63 54 E0 0C
13 01 01 FF 23 26 11 00 23 24 81 00 23 22 91 00
23 20 21 01 37 14 00 00 13 04 44 6F 93 04 00 00
13 89 07 00 6F 00 C0 01 13 85 04 00 EF F0 5F DA
93 84 14 00 03 27 09 6E 13 04 44 00 63 DC E4 02
83 27 04 00 E3 96 07 FE 93 85 14 00 E3 D2 E5 FE
83 27 44 00 E3 9A 07 FC 93 07 84 00 93 85 15 00
E3 88 E5 FC 93 87 47 00 83 A6 C7 FF E3 88 06 FE
6F F0 9F FB 63 5C E0 02 B7 17 00 00 83 A7 47 6F
63 82 07 02 B7 16 00 00 93 86 86 6F 93 07 00 00
93 87 17 00 63 0C F7 00 93 86 46 00 03 A6 C6 FF
E3 18 06 FE 37 17 00 00 23 20 F7 6E 83 20 C1 00
03 24 81 00 83 24 41 00 03 29 01 00 13 01 01 01
67 80 00 00 67 80 00 00 B7 17 00 00 03 A6 07 6E
63 54 C0 02 B7 17 00 00 93 87 47 6F 93 16 26 00
B3 86 F6 00 03 A7 07 00 13 07 F7 FF 23 A0 E7 00
93 87 47 00 E3 98 D7 FE B7 17 00 00 13 17 26 00
93 87 47 6F B3 87 E7 00 23 A0 C7 00 13 06 16 00
B7 17 00 00 23 A0 C7 6E 67 80 00 00 13 01 01 FE
23 2E 11 00 23 2C 81 00 23 2A 91 00 23 28 21 01
23 26 31 01 23 24 41 01 23 22 51 01 B7 17 00 00
13 07 20 0D 23 A2 E7 6E B7 17 00 00 23 A8 07 6E
B7 17 00 00 03 A4 87 6D B7 17 00 00 83 A4 C7 6D
93 85 04 00 13 05 04 00 EF 00 40 1A B7 17 00 00
23 A4 A7 6E 93 85 04 00 13 05 04 00 EF 00 40 21
B7 17 00 00 23 A6 A7 6E 13 05 20 0D EF F0 1F C7
93 07 10 00 63 16 05 02 13 85 07 00 83 20 C1 01
03 24 81 01 83 24 41 01 03 29 01 01 83 29 C1 00
03 2A 81 00 83 2A 41 00 13 01 01 02 67 80 00 00
37 17 00 00 B7 C7 37 00 93 87 27 4F 23 2A F7 6C
EF F0 5F B6 93 05 A0 00 EF 00 80 1B 13 05 15 00
37 14 00 00 23 20 A4 6E EF F0 9F B0 83 27 04 6E
93 87 F7 FF 63 50 F0 08 B7 19 00 00 93 89 49 6F
13 04 00 00 13 0A 00 00 B7 14 00 00 B7 1A 00 00
6F 00 C0 01 13 0A 1A 00 83 A7 0A 6E 93 87 F7 FF
93 89 49 00 13 04 05 00 63 58 FA 04 EF F0 9F B0
93 05 A0 00 EF 00 C0 15 13 05 15 00 13 89 09 00
23 A0 A9 00 33 05 85 00 83 A7 44 6E E3 D4 A7 FC
EF F0 5F AE 93 05 A0 00 EF 00 80 13 13 05 15 00
23 20 A9 00 33 05 85 00 83 A7 44 6E E3 C2 A7 FE
6F F0 5F FA 13 05 00 00 37 17 00 00 93 97 27 00
13 07 47 6F B3 07 F7 00 37 17 00 00 03 27 47 6E
33 05 A7 40 23 A0 A7 00 EF F0 5F C1 EF F0 9F D5
13 04 00 00 6F 00 C0 01 13 04 14 00 13 05 04 00
EF F0 1F A4 EF F0 5F E1 EF F0 DF D3 EF F0 1F BF
EF F0 1F C5 E3 02 05 FE 13 05 04 00 EF F0 5F A2
93 05 D0 0F B7 27 00 00 03 A5 47 88 EF 00 40 0B
93 07 05 00 6F F0 5F EB 13 06 05 00 13 05 00 00
93 F6 15 00 63 84 06 00 33 05 C5 00 93 D5 15 00
13 16 16 00 E3 96 05 FE 67 80 00 00 63 40 05 06
63 C6 05 06 13 86 05 00 93 05 05 00 13 05 F0 FF
63 0C 06 02 93 06 10 00 63 7A B6 00 63 58 C0 00
13 16 16 00 93 96 16 00 E3 6A B6 FE 13 05 00 00
63 E6 C5 00 B3 85 C5 40 33 65 D5 00 93 D6 16 00
13 56 16 00 E3 96 06 FE 67 80 00 00 93 82 00 00
EF F0 5F FB 13 85 05 00 67 80 02 00 33 05 A0 40
63 D8 05 00 B3 05 B0 40 6F F0 DF F9 B3 05 B0 40
93 82 00 00 EF F0 1F F9 33 05 A0 40 67 80 02 00
93 82 00 00 63 CA 05 00 63 4C 05 00 EF F0 9F F7
13 85 05 00 67 80 02 00 B3 05 B0 40 E3 58 05 FE
33 05 A0 40 EF F0 1F F6 33 05 B0 40 67 80 02 00
@000016D0
FD 00 00 00
@000016D4
01 00 00 00 FF FF FF 7F 8F BC 00 00

View File

@ -0,0 +1,897 @@
./test/test.om: file format elf32-littleriscv
Disassembly of section .rom:
00000000 <.rom>:
0: 00020137 lui sp,0x20
4: 428010ef jal ra,142c <main>
8: 0ff00513 li a0,255
c: 000306b7 lui a3,0x30
10: 00a68223 sb a0,4(a3) # 30004 <__heap_start+0x2e004>
14: ff9ff06f j c <printInt-0xff4>
Disassembly of section .text:
00001000 <printInt>:
1000: 00002737 lui a4,0x2
1004: 88472783 lw a5,-1916(a4) # 1884 <__bss_end>
1008: 00f54533 xor a0,a0,a5
100c: 0ad50513 addi a0,a0,173
1010: 88a72223 sw a0,-1916(a4)
1014: 00008067 ret
00001018 <printStr>:
1018: 00054783 lbu a5,0(a0)
101c: 02078263 beqz a5,1040 <printStr+0x28>
1020: 00002737 lui a4,0x2
1024: 88472683 lw a3,-1916(a4) # 1884 <__bss_end>
1028: 00d7c7b3 xor a5,a5,a3
102c: 20978793 addi a5,a5,521
1030: 88f72223 sw a5,-1916(a4)
1034: 00150513 addi a0,a0,1
1038: 00054783 lbu a5,0(a0)
103c: fe0794e3 bnez a5,1024 <printStr+0xc>
1040: 00008067 ret
00001044 <random>:
1044: ff010113 addi sp,sp,-16 # 1fff0 <__heap_start+0x1dff0>
1048: 00112623 sw ra,12(sp)
104c: 00812423 sw s0,8(sp)
1050: 00912223 sw s1,4(sp)
1054: 01212023 sw s2,0(sp)
1058: 000017b7 lui a5,0x1
105c: 6d47a483 lw s1,1748(a5) # 16d4 <__bss_start>
1060: 000017b7 lui a5,0x1
1064: 6e87a903 lw s2,1768(a5) # 16e8 <Q>
1068: 00090593 mv a1,s2
106c: 00048513 mv a0,s1
1070: 630000ef jal ra,16a0 <__modsi3>
1074: 000017b7 lui a5,0x1
1078: 6dc7a583 lw a1,1756(a5) # 16dc <A>
107c: 57c000ef jal ra,15f8 <__mulsi3>
1080: 00050413 mv s0,a0
1084: 00090593 mv a1,s2
1088: 00048513 mv a0,s1
108c: 590000ef jal ra,161c <__divsi3>
1090: 000017b7 lui a5,0x1
1094: 6ec7a583 lw a1,1772(a5) # 16ec <R>
1098: 560000ef jal ra,15f8 <__mulsi3>
109c: 40a40533 sub a0,s0,a0
10a0: 02054263 bltz a0,10c4 <random+0x80>
10a4: 000017b7 lui a5,0x1
10a8: 6ca7aa23 sw a0,1748(a5) # 16d4 <__bss_start>
10ac: 00c12083 lw ra,12(sp)
10b0: 00812403 lw s0,8(sp)
10b4: 00412483 lw s1,4(sp)
10b8: 00012903 lw s2,0(sp)
10bc: 01010113 addi sp,sp,16
10c0: 00008067 ret
10c4: 000017b7 lui a5,0x1
10c8: 6d87a783 lw a5,1752(a5) # 16d8 <M>
10cc: 00f50533 add a0,a0,a5
10d0: fd5ff06f j 10a4 <random+0x60>
000010d4 <initialize>:
10d4: 000017b7 lui a5,0x1
10d8: 6ca7aa23 sw a0,1748(a5) # 16d4 <__bss_start>
10dc: 00008067 ret
000010e0 <swap>:
10e0: 000017b7 lui a5,0x1
10e4: 6f478793 addi a5,a5,1780 # 16f4 <a>
10e8: 00251513 slli a0,a0,0x2
10ec: 00a78533 add a0,a5,a0
10f0: 00052703 lw a4,0(a0)
10f4: 00259593 slli a1,a1,0x2
10f8: 00b787b3 add a5,a5,a1
10fc: 0007a683 lw a3,0(a5)
1100: 00d52023 sw a3,0(a0)
1104: 00e7a023 sw a4,0(a5)
1108: 00008067 ret
0000110c <pd>:
110c: ff010113 addi sp,sp,-16
1110: 00112623 sw ra,12(sp)
1114: 00812423 sw s0,8(sp)
1118: 00912223 sw s1,4(sp)
111c: 01212023 sw s2,0(sp)
1120: 00050913 mv s2,a0
1124: 000017b7 lui a5,0x1
1128: 6f07a503 lw a0,1776(a5) # 16f0 <h>
112c: 08a94063 blt s2,a0,11ac <pd+0xa0>
1130: 00150413 addi s0,a0,1
1134: 00040593 mv a1,s0
1138: 4c0000ef jal ra,15f8 <__mulsi3>
113c: 01f55793 srli a5,a0,0x1f
1140: 00a78533 add a0,a5,a0
1144: 40155513 srai a0,a0,0x1
1148: 06a90663 beq s2,a0,11b4 <pd+0xa8>
114c: 02894e63 blt s2,s0,1188 <pd+0x7c>
1150: 00140493 addi s1,s0,1
1154: 00040593 mv a1,s0
1158: 00048513 mv a0,s1
115c: 49c000ef jal ra,15f8 <__mulsi3>
1160: 01f55793 srli a5,a0,0x1f
1164: 00a787b3 add a5,a5,a0
1168: 4017d793 srai a5,a5,0x1
116c: 01278663 beq a5,s2,1178 <pd+0x6c>
1170: 00048413 mv s0,s1
1174: fd9ff06f j 114c <pd+0x40>
1178: 000017b7 lui a5,0x1
117c: 6e87a823 sw s0,1776(a5) # 16f0 <h>
1180: 00100513 li a0,1
1184: 0100006f j 1194 <pd+0x88>
1188: 000017b7 lui a5,0x1
118c: 6e87a823 sw s0,1776(a5) # 16f0 <h>
1190: 00000513 li a0,0
1194: 00c12083 lw ra,12(sp)
1198: 00812403 lw s0,8(sp)
119c: 00412483 lw s1,4(sp)
11a0: 00012903 lw s2,0(sp)
11a4: 01010113 addi sp,sp,16
11a8: 00008067 ret
11ac: 00000513 li a0,0
11b0: fe5ff06f j 1194 <pd+0x88>
11b4: 00100513 li a0,1
11b8: fddff06f j 1194 <pd+0x88>
000011bc <show>:
11bc: 000017b7 lui a5,0x1
11c0: 6e07a783 lw a5,1760(a5) # 16e0 <now>
11c4: 04f05c63 blez a5,121c <show+0x60>
11c8: ff010113 addi sp,sp,-16
11cc: 00112623 sw ra,12(sp)
11d0: 00812423 sw s0,8(sp)
11d4: 00912223 sw s1,4(sp)
11d8: 01212023 sw s2,0(sp)
11dc: 00001437 lui s0,0x1
11e0: 6f440413 addi s0,s0,1780 # 16f4 <a>
11e4: 00000493 li s1,0
11e8: 00001937 lui s2,0x1
11ec: 00042503 lw a0,0(s0)
11f0: e11ff0ef jal ra,1000 <printInt>
11f4: 00148493 addi s1,s1,1
11f8: 00440413 addi s0,s0,4
11fc: 6e092783 lw a5,1760(s2) # 16e0 <now>
1200: fef4c6e3 blt s1,a5,11ec <show+0x30>
1204: 00c12083 lw ra,12(sp)
1208: 00812403 lw s0,8(sp)
120c: 00412483 lw s1,4(sp)
1210: 00012903 lw s2,0(sp)
1214: 01010113 addi sp,sp,16
1218: 00008067 ret
121c: 00008067 ret
00001220 <win>:
1220: 000017b7 lui a5,0x1
1224: 6e07a883 lw a7,1760(a5) # 16e0 <now>
1228: 000017b7 lui a5,0x1
122c: 6f07a783 lw a5,1776(a5) # 16f0 <h>
1230: 00000513 li a0,0
1234: 0cf89663 bne a7,a5,1300 <win+0xe0>
1238: e7010113 addi sp,sp,-400
123c: 03105663 blez a7,1268 <win+0x48>
1240: 000017b7 lui a5,0x1
1244: 6f478793 addi a5,a5,1780 # 16f4 <a>
1248: 00010713 mv a4,sp
124c: 00289613 slli a2,a7,0x2
1250: 00f60633 add a2,a2,a5
1254: 0007a683 lw a3,0(a5)
1258: 00d72023 sw a3,0(a4)
125c: 00478793 addi a5,a5,4
1260: 00470713 addi a4,a4,4
1264: fec798e3 bne a5,a2,1254 <win+0x34>
1268: 00410813 addi a6,sp,4
126c: 00088e13 mv t3,a7
1270: 00289593 slli a1,a7,0x2
1274: 002585b3 add a1,a1,sp
1278: 00080613 mv a2,a6
127c: 00000513 li a0,0
1280: fff88313 addi t1,a7,-1
1284: 0280006f j 12ac <win+0x8c>
1288: 00478793 addi a5,a5,4
128c: 00b78e63 beq a5,a1,12a8 <win+0x88>
1290: ffc62703 lw a4,-4(a2)
1294: 0007a683 lw a3,0(a5)
1298: fee6d8e3 bge a3,a4,1288 <win+0x68>
129c: fed62e23 sw a3,-4(a2)
12a0: 00e7a023 sw a4,0(a5)
12a4: fe5ff06f j 1288 <win+0x68>
12a8: 00460613 addi a2,a2,4
12ac: 00655a63 bge a0,t1,12c0 <win+0xa0>
12b0: 00150513 addi a0,a0,1
12b4: ff155ae3 bge a0,a7,12a8 <win+0x88>
12b8: 00060793 mv a5,a2
12bc: fd5ff06f j 1290 <win+0x70>
12c0: 03105863 blez a7,12f0 <win+0xd0>
12c4: 00012503 lw a0,0(sp)
12c8: 00100793 li a5,1
12cc: 02f51663 bne a0,a5,12f8 <win+0xd8>
12d0: 01c78c63 beq a5,t3,12e8 <win+0xc8>
12d4: 00082703 lw a4,0(a6)
12d8: 00178793 addi a5,a5,1
12dc: 00480813 addi a6,a6,4
12e0: fef708e3 beq a4,a5,12d0 <win+0xb0>
12e4: 00000513 li a0,0
12e8: 19010113 addi sp,sp,400
12ec: 00008067 ret
12f0: 00100513 li a0,1
12f4: ff5ff06f j 12e8 <win+0xc8>
12f8: 00000513 li a0,0
12fc: fedff06f j 12e8 <win+0xc8>
1300: 00008067 ret
00001304 <merge>:
1304: 000017b7 lui a5,0x1
1308: 6e07a703 lw a4,1760(a5) # 16e0 <now>
130c: 0ce05463 blez a4,13d4 <merge+0xd0>
1310: ff010113 addi sp,sp,-16
1314: 00112623 sw ra,12(sp)
1318: 00812423 sw s0,8(sp)
131c: 00912223 sw s1,4(sp)
1320: 01212023 sw s2,0(sp)
1324: 00001437 lui s0,0x1
1328: 6f440413 addi s0,s0,1780 # 16f4 <a>
132c: 00000493 li s1,0
1330: 00078913 mv s2,a5
1334: 01c0006f j 1350 <merge+0x4c>
1338: 00048513 mv a0,s1
133c: da5ff0ef jal ra,10e0 <swap>
1340: 00148493 addi s1,s1,1
1344: 6e092703 lw a4,1760(s2)
1348: 00440413 addi s0,s0,4
134c: 02e4dc63 bge s1,a4,1384 <merge+0x80>
1350: 00042783 lw a5,0(s0)
1354: fe0796e3 bnez a5,1340 <merge+0x3c>
1358: 00148593 addi a1,s1,1
135c: fee5d2e3 bge a1,a4,1340 <merge+0x3c>
1360: 00442783 lw a5,4(s0)
1364: fc079ae3 bnez a5,1338 <merge+0x34>
1368: 00840793 addi a5,s0,8
136c: 00158593 addi a1,a1,1
1370: fce588e3 beq a1,a4,1340 <merge+0x3c>
1374: 00478793 addi a5,a5,4
1378: ffc7a683 lw a3,-4(a5)
137c: fe0688e3 beqz a3,136c <merge+0x68>
1380: fb9ff06f j 1338 <merge+0x34>
1384: 02e05c63 blez a4,13bc <merge+0xb8>
1388: 000017b7 lui a5,0x1
138c: 6f47a783 lw a5,1780(a5) # 16f4 <a>
1390: 02078263 beqz a5,13b4 <merge+0xb0>
1394: 000016b7 lui a3,0x1
1398: 6f868693 addi a3,a3,1784 # 16f8 <a+0x4>
139c: 00000793 li a5,0
13a0: 00178793 addi a5,a5,1
13a4: 00f70c63 beq a4,a5,13bc <merge+0xb8>
13a8: 00468693 addi a3,a3,4
13ac: ffc6a603 lw a2,-4(a3)
13b0: fe0618e3 bnez a2,13a0 <merge+0x9c>
13b4: 00001737 lui a4,0x1
13b8: 6ef72023 sw a5,1760(a4) # 16e0 <now>
13bc: 00c12083 lw ra,12(sp)
13c0: 00812403 lw s0,8(sp)
13c4: 00412483 lw s1,4(sp)
13c8: 00012903 lw s2,0(sp)
13cc: 01010113 addi sp,sp,16
13d0: 00008067 ret
13d4: 00008067 ret
000013d8 <move>:
13d8: 000017b7 lui a5,0x1
13dc: 6e07a603 lw a2,1760(a5) # 16e0 <now>
13e0: 02c05463 blez a2,1408 <move+0x30>
13e4: 000017b7 lui a5,0x1
13e8: 6f478793 addi a5,a5,1780 # 16f4 <a>
13ec: 00261693 slli a3,a2,0x2
13f0: 00f686b3 add a3,a3,a5
13f4: 0007a703 lw a4,0(a5)
13f8: fff70713 addi a4,a4,-1
13fc: 00e7a023 sw a4,0(a5)
1400: 00478793 addi a5,a5,4
1404: fed798e3 bne a5,a3,13f4 <move+0x1c>
1408: 000017b7 lui a5,0x1
140c: 00261713 slli a4,a2,0x2
1410: 6f478793 addi a5,a5,1780 # 16f4 <a>
1414: 00e787b3 add a5,a5,a4
1418: 00c7a023 sw a2,0(a5)
141c: 00160613 addi a2,a2,1
1420: 000017b7 lui a5,0x1
1424: 6ec7a023 sw a2,1760(a5) # 16e0 <now>
1428: 00008067 ret
0000142c <main>:
142c: fe010113 addi sp,sp,-32
1430: 00112e23 sw ra,28(sp)
1434: 00812c23 sw s0,24(sp)
1438: 00912a23 sw s1,20(sp)
143c: 01212823 sw s2,16(sp)
1440: 01312623 sw s3,12(sp)
1444: 01412423 sw s4,8(sp)
1448: 01512223 sw s5,4(sp)
144c: 000017b7 lui a5,0x1
1450: 0d200713 li a4,210
1454: 6ee7a223 sw a4,1764(a5) # 16e4 <n>
1458: 000017b7 lui a5,0x1
145c: 6e07a823 sw zero,1776(a5) # 16f0 <h>
1460: 000017b7 lui a5,0x1
1464: 6d87a403 lw s0,1752(a5) # 16d8 <M>
1468: 000017b7 lui a5,0x1
146c: 6dc7a483 lw s1,1756(a5) # 16dc <A>
1470: 00048593 mv a1,s1
1474: 00040513 mv a0,s0
1478: 1a4000ef jal ra,161c <__divsi3>
147c: 000017b7 lui a5,0x1
1480: 6ea7a423 sw a0,1768(a5) # 16e8 <Q>
1484: 00048593 mv a1,s1
1488: 00040513 mv a0,s0
148c: 214000ef jal ra,16a0 <__modsi3>
1490: 000017b7 lui a5,0x1
1494: 6ea7a623 sw a0,1772(a5) # 16ec <R>
1498: 0d200513 li a0,210
149c: c71ff0ef jal ra,110c <pd>
14a0: 00100793 li a5,1
14a4: 02051663 bnez a0,14d0 <main+0xa4>
14a8: 00078513 mv a0,a5
14ac: 01c12083 lw ra,28(sp)
14b0: 01812403 lw s0,24(sp)
14b4: 01412483 lw s1,20(sp)
14b8: 01012903 lw s2,16(sp)
14bc: 00c12983 lw s3,12(sp)
14c0: 00812a03 lw s4,8(sp)
14c4: 00412a83 lw s5,4(sp)
14c8: 02010113 addi sp,sp,32
14cc: 00008067 ret
14d0: 00001737 lui a4,0x1
14d4: 0037c7b7 lui a5,0x37c
14d8: 4f278793 addi a5,a5,1266 # 37c4f2 <__heap_start+0x37a4f2>
14dc: 6cf72a23 sw a5,1748(a4) # 16d4 <__bss_start>
14e0: b65ff0ef jal ra,1044 <random>
14e4: 00a00593 li a1,10
14e8: 1b8000ef jal ra,16a0 <__modsi3>
14ec: 00150513 addi a0,a0,1
14f0: 00001437 lui s0,0x1
14f4: 6ea42023 sw a0,1760(s0) # 16e0 <now>
14f8: b09ff0ef jal ra,1000 <printInt>
14fc: 6e042783 lw a5,1760(s0)
1500: fff78793 addi a5,a5,-1
1504: 08f05063 blez a5,1584 <main+0x158>
1508: 000019b7 lui s3,0x1
150c: 6f498993 addi s3,s3,1780 # 16f4 <a>
1510: 00000413 li s0,0
1514: 00000a13 li s4,0
1518: 000014b7 lui s1,0x1
151c: 00001ab7 lui s5,0x1
1520: 01c0006f j 153c <main+0x110>
1524: 001a0a13 addi s4,s4,1
1528: 6e0aa783 lw a5,1760(s5) # 16e0 <now>
152c: fff78793 addi a5,a5,-1
1530: 00498993 addi s3,s3,4
1534: 00050413 mv s0,a0
1538: 04fa5863 bge s4,a5,1588 <main+0x15c>
153c: b09ff0ef jal ra,1044 <random>
1540: 00a00593 li a1,10
1544: 15c000ef jal ra,16a0 <__modsi3>
1548: 00150513 addi a0,a0,1
154c: 00098913 mv s2,s3
1550: 00a9a023 sw a0,0(s3)
1554: 00850533 add a0,a0,s0
1558: 6e44a783 lw a5,1764(s1) # 16e4 <n>
155c: fca7d4e3 bge a5,a0,1524 <main+0xf8>
1560: ae5ff0ef jal ra,1044 <random>
1564: 00a00593 li a1,10
1568: 138000ef jal ra,16a0 <__modsi3>
156c: 00150513 addi a0,a0,1
1570: 00a92023 sw a0,0(s2)
1574: 00850533 add a0,a0,s0
1578: 6e44a783 lw a5,1764(s1)
157c: fea7c2e3 blt a5,a0,1560 <main+0x134>
1580: fa5ff06f j 1524 <main+0xf8>
1584: 00000513 li a0,0
1588: 00001737 lui a4,0x1
158c: 00279793 slli a5,a5,0x2
1590: 6f470713 addi a4,a4,1780 # 16f4 <a>
1594: 00f707b3 add a5,a4,a5
1598: 00001737 lui a4,0x1
159c: 6e472703 lw a4,1764(a4) # 16e4 <n>
15a0: 40a70533 sub a0,a4,a0
15a4: 00a7a023 sw a0,0(a5)
15a8: c15ff0ef jal ra,11bc <show>
15ac: d59ff0ef jal ra,1304 <merge>
15b0: 00000413 li s0,0
15b4: 01c0006f j 15d0 <main+0x1a4>
15b8: 00140413 addi s0,s0,1
15bc: 00040513 mv a0,s0
15c0: a41ff0ef jal ra,1000 <printInt>
15c4: e15ff0ef jal ra,13d8 <move>
15c8: d3dff0ef jal ra,1304 <merge>
15cc: bf1ff0ef jal ra,11bc <show>
15d0: c51ff0ef jal ra,1220 <win>
15d4: fe0502e3 beqz a0,15b8 <main+0x18c>
15d8: 00040513 mv a0,s0
15dc: a25ff0ef jal ra,1000 <printInt>
15e0: 0fd00593 li a1,253
15e4: 000027b7 lui a5,0x2
15e8: 8847a503 lw a0,-1916(a5) # 1884 <__bss_end>
15ec: 0b4000ef jal ra,16a0 <__modsi3>
15f0: 00050793 mv a5,a0
15f4: eb5ff06f j 14a8 <main+0x7c>
000015f8 <__mulsi3>:
15f8: 00050613 mv a2,a0
15fc: 00000513 li a0,0
1600: 0015f693 andi a3,a1,1
1604: 00068463 beqz a3,160c <__mulsi3+0x14>
1608: 00c50533 add a0,a0,a2
160c: 0015d593 srli a1,a1,0x1
1610: 00161613 slli a2,a2,0x1
1614: fe0596e3 bnez a1,1600 <__mulsi3+0x8>
1618: 00008067 ret
0000161c <__divsi3>:
161c: 06054063 bltz a0,167c <__umodsi3+0x10>
1620: 0605c663 bltz a1,168c <__umodsi3+0x20>
00001624 <__udivsi3>:
1624: 00058613 mv a2,a1
1628: 00050593 mv a1,a0
162c: fff00513 li a0,-1
1630: 02060c63 beqz a2,1668 <__udivsi3+0x44>
1634: 00100693 li a3,1
1638: 00b67a63 bgeu a2,a1,164c <__udivsi3+0x28>
163c: 00c05863 blez a2,164c <__udivsi3+0x28>
1640: 00161613 slli a2,a2,0x1
1644: 00169693 slli a3,a3,0x1
1648: feb66ae3 bltu a2,a1,163c <__udivsi3+0x18>
164c: 00000513 li a0,0
1650: 00c5e663 bltu a1,a2,165c <__udivsi3+0x38>
1654: 40c585b3 sub a1,a1,a2
1658: 00d56533 or a0,a0,a3
165c: 0016d693 srli a3,a3,0x1
1660: 00165613 srli a2,a2,0x1
1664: fe0696e3 bnez a3,1650 <__udivsi3+0x2c>
1668: 00008067 ret
0000166c <__umodsi3>:
166c: 00008293 mv t0,ra
1670: fb5ff0ef jal ra,1624 <__udivsi3>
1674: 00058513 mv a0,a1
1678: 00028067 jr t0
167c: 40a00533 neg a0,a0
1680: 0005d863 bgez a1,1690 <__umodsi3+0x24>
1684: 40b005b3 neg a1,a1
1688: f9dff06f j 1624 <__udivsi3>
168c: 40b005b3 neg a1,a1
1690: 00008293 mv t0,ra
1694: f91ff0ef jal ra,1624 <__udivsi3>
1698: 40a00533 neg a0,a0
169c: 00028067 jr t0
000016a0 <__modsi3>:
16a0: 00008293 mv t0,ra
16a4: 0005ca63 bltz a1,16b8 <__modsi3+0x18>
16a8: 00054c63 bltz a0,16c0 <__modsi3+0x20>
16ac: f79ff0ef jal ra,1624 <__udivsi3>
16b0: 00058513 mv a0,a1
16b4: 00028067 jr t0
16b8: 40b005b3 neg a1,a1
16bc: fe0558e3 bgez a0,16ac <__modsi3+0xc>
16c0: 40a00533 neg a0,a0
16c4: f61ff0ef jal ra,1624 <__udivsi3>
16c8: 40b00533 neg a0,a1
16cc: 00028067 jr t0
Disassembly of section .srodata:
000016d0 <Mod>:
16d0: 00fd addi ra,ra,31
...
Disassembly of section .sdata:
000016d4 <seed>:
16d4: 0001 nop
...
000016d8 <M>:
16d8: ffff 0xffff
16da: 7fff 0x7fff
000016dc <A>:
16dc: 0000bc8f 0xbc8f
Disassembly of section .bss:
000016e0 <now>:
16e0: 0000 unimp
...
000016e4 <n>:
16e4: 0000 unimp
...
000016e8 <Q>:
16e8: 0000 unimp
...
000016ec <R>:
16ec: 0000 unimp
...
000016f0 <h>:
16f0: 0000 unimp
...
000016f4 <a>:
...
Disassembly of section .sbss:
00001884 <judgeResult>:
1884: 0000 unimp
...
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 fmsub.d ft6,ft6,ft4,ft7,rmm
4: 2820 fld fs0,80(s0)
6: 29554e47 fmsub.s ft8,fa0,fs5,ft5,rmm
a: 3820 fld fs0,112(s0)
c: 332e fld ft6,232(sp)
e: 302e fld ft0,232(sp)
...
Disassembly of section .debug_line:
00000000 <.debug_line>:
0: 008e slli ra,ra,0x3
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0048 addi a0,sp,4
8: 0000 unimp
a: 0101 addi sp,sp,0
c: 000d0efb 0xd0efb
10: 0101 addi sp,sp,0
12: 0101 addi sp,sp,0
14: 0000 unimp
16: 0100 addi s0,sp,128
18: 0000 unimp
1a: 2e01 jal 32a <printInt-0xcd6>
1c: 2f2e fld ft10,200(sp)
1e: 2e2e fld ft8,200(sp)
20: 2f2e2e2f 0x2f2e2e2f
24: 2f2e fld ft10,200(sp)
26: 6972 flw fs2,28(sp)
28: 2d766373 csrrsi t1,0x2d7,12
2c: 2f636367 0x2f636367
30: 696c flw fa1,84(a0)
32: 6762 flw fa4,24(sp)
34: 632f6363 bltu t5,s2,65a <printInt-0x9a6>
38: 69666e6f jal t3,666ce <__heap_start+0x646ce>
3c: 69722f67 0x69722f67
40: 00766373 csrrsi t1,0x7,12
44: 6d00 flw fs0,24(a0)
46: 6c75 lui s8,0x1d
48: 6964 flw fs1,84(a0)
4a: 00532e33 slt t3,t1,t0
4e: 0001 nop
50: 0000 unimp
52: 0500 addi s0,sp,640
54: f802 fsw ft0,48(sp)
56: 0015 c.nop 5
58: 0300 addi s0,sp,384
5a: 0124 addi s1,sp,136
5c: 04090103 lb sp,64(s2)
60: 0100 addi s0,sp,128
62: 04090203 lb tp,64(s2)
66: 0100 addi s0,sp,128
68: 04090103 lb sp,64(s2)
6c: 0100 addi s0,sp,128
6e: 04090103 lb sp,64(s2)
72: 0100 addi s0,sp,128
74: 04090203 lb tp,64(s2)
78: 0100 addi s0,sp,128
7a: 04090103 lb sp,64(s2)
7e: 0100 addi s0,sp,128
80: 04090103 lb sp,64(s2)
84: 0100 addi s0,sp,128
86: 04090103 lb sp,64(s2)
8a: 0100 addi s0,sp,128
8c: 0409 addi s0,s0,2
8e: 0000 unimp
90: 0101 addi sp,sp,0
92: 0164 addi s1,sp,140
94: 0000 unimp
96: 0002 c.slli64 zero
98: 0045 c.nop 17
9a: 0000 unimp
9c: 0101 addi sp,sp,0
9e: 000d0efb 0xd0efb
a2: 0101 addi sp,sp,0
a4: 0101 addi sp,sp,0
a6: 0000 unimp
a8: 0100 addi s0,sp,128
aa: 0000 unimp
ac: 2e01 jal 3bc <printInt-0xc44>
ae: 2f2e fld ft10,200(sp)
b0: 2e2e fld ft8,200(sp)
b2: 2f2e2e2f 0x2f2e2e2f
b6: 2f2e fld ft10,200(sp)
b8: 6972 flw fs2,28(sp)
ba: 2d766373 csrrsi t1,0x2d7,12
be: 2f636367 0x2f636367
c2: 696c flw fa1,84(a0)
c4: 6762 flw fa4,24(sp)
c6: 632f6363 bltu t5,s2,6ec <printInt-0x914>
ca: 69666e6f jal t3,66760 <__heap_start+0x64760>
ce: 69722f67 0x69722f67
d2: 00766373 csrrsi t1,0x7,12
d6: 6400 flw fs0,8(s0)
d8: 7669 lui a2,0xffffa
da: 532e lw t1,232(sp)
dc: 0100 addi s0,sp,128
de: 0000 unimp
e0: 0000 unimp
e2: 0205 addi tp,tp,1
e4: 161c addi a5,sp,800
e6: 0000 unimp
e8: 0100c403 lbu s0,16(ra)
ec: 04090103 lb sp,64(s2)
f0: 0100 addi s0,sp,128
f2: 04090403 lb s0,64(s2)
f6: 0100 addi s0,sp,128
f8: 04090103 lb sp,64(s2)
fc: 0100 addi s0,sp,128
fe: 04090103 lb sp,64(s2)
102: 0100 addi s0,sp,128
104: 04090103 lb sp,64(s2)
108: 0100 addi s0,sp,128
10a: 04090103 lb sp,64(s2)
10e: 0100 addi s0,sp,128
110: 04090103 lb sp,64(s2)
114: 0100 addi s0,sp,128
116: 04090203 lb tp,64(s2)
11a: 0100 addi s0,sp,128
11c: 04090103 lb sp,64(s2)
120: 0100 addi s0,sp,128
122: 04090103 lb sp,64(s2)
126: 0100 addi s0,sp,128
128: 04090103 lb sp,64(s2)
12c: 0100 addi s0,sp,128
12e: 04090203 lb tp,64(s2)
132: 0100 addi s0,sp,128
134: 04090203 lb tp,64(s2)
138: 0100 addi s0,sp,128
13a: 04090103 lb sp,64(s2)
13e: 0100 addi s0,sp,128
140: 04090103 lb sp,64(s2)
144: 0100 addi s0,sp,128
146: 04090203 lb tp,64(s2)
14a: 0100 addi s0,sp,128
14c: 04090103 lb sp,64(s2)
150: 0100 addi s0,sp,128
152: 04090103 lb sp,64(s2)
156: 0100 addi s0,sp,128
158: 04090203 lb tp,64(s2)
15c: 0100 addi s0,sp,128
15e: 04090503 lb a0,64(s2)
162: 0100 addi s0,sp,128
164: 04090103 lb sp,64(s2)
168: 0100 addi s0,sp,128
16a: 04090103 lb sp,64(s2)
16e: 0100 addi s0,sp,128
170: 04090103 lb sp,64(s2)
174: 0100 addi s0,sp,128
176: 04090503 lb a0,64(s2)
17a: 0100 addi s0,sp,128
17c: 04090103 lb sp,64(s2)
180: 0100 addi s0,sp,128
182: 04090103 lb sp,64(s2)
186: 0100 addi s0,sp,128
188: 04090103 lb sp,64(s2)
18c: 0100 addi s0,sp,128
18e: 04090203 lb tp,64(s2)
192: 0100 addi s0,sp,128
194: 04090203 lb tp,64(s2)
198: 0100 addi s0,sp,128
19a: 04090103 lb sp,64(s2)
19e: 0100 addi s0,sp,128
1a0: 04090103 lb sp,64(s2)
1a4: 0100 addi s0,sp,128
1a6: 04090103 lb sp,64(s2)
1aa: 0100 addi s0,sp,128
1ac: 04090403 lb s0,64(s2)
1b0: 0100 addi s0,sp,128
1b2: 04090103 lb sp,64(s2)
1b6: 0100 addi s0,sp,128
1b8: 04090103 lb sp,64(s2)
1bc: 0100 addi s0,sp,128
1be: 04090203 lb tp,64(s2)
1c2: 0100 addi s0,sp,128
1c4: 04090103 lb sp,64(s2)
1c8: 0100 addi s0,sp,128
1ca: 04090103 lb sp,64(s2)
1ce: 0100 addi s0,sp,128
1d0: 04090203 lb tp,64(s2)
1d4: 0100 addi s0,sp,128
1d6: 04090103 lb sp,64(s2)
1da: 0100 addi s0,sp,128
1dc: 04090203 lb tp,64(s2)
1e0: 0100 addi s0,sp,128
1e2: 04090103 lb sp,64(s2)
1e6: 0100 addi s0,sp,128
1e8: 04090103 lb sp,64(s2)
1ec: 0100 addi s0,sp,128
1ee: 04090103 lb sp,64(s2)
1f2: 0100 addi s0,sp,128
1f4: 0409 addi s0,s0,2
1f6: 0000 unimp
1f8: 0101 addi sp,sp,0
Disassembly of section .debug_info:
00000000 <.debug_info>:
0: 0022 c.slli zero,0x8
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0104 addi s1,sp,128
c: 0000 unimp
e: 0000 unimp
10: 15f8 addi a4,sp,748
12: 0000 unimp
14: 161c addi a5,sp,800
16: 0000 unimp
18: 0000 unimp
1a: 0000 unimp
1c: 0032 c.slli zero,0xc
1e: 0000 unimp
20: 0000008b 0x8b
24: 8001 c.srli64 s0
26: 0022 c.slli zero,0x8
28: 0000 unimp
2a: 0002 c.slli64 zero
2c: 0014 0x14
2e: 0000 unimp
30: 0104 addi s1,sp,128
32: 0092 slli ra,ra,0x4
34: 0000 unimp
36: 161c addi a5,sp,800
38: 0000 unimp
3a: 16d0 addi a2,sp,868
3c: 0000 unimp
3e: 0099 addi ra,ra,6
40: 0000 unimp
42: 0032 c.slli zero,0xc
44: 0000 unimp
46: 0000008b 0x8b
4a: 8001 c.srli64 s0
Disassembly of section .debug_abbrev:
00000000 <.debug_abbrev>:
0: 1101 addi sp,sp,-32
2: 1000 addi s0,sp,32
4: 1106 slli sp,sp,0x21
6: 1201 addi tp,tp,-32
8: 0301 addi t1,t1,0
a: 1b0e slli s6,s6,0x23
c: 250e fld fa0,192(sp)
e: 130e slli t1,t1,0x23
10: 0005 c.nop 1
12: 0000 unimp
14: 1101 addi sp,sp,-32
16: 1000 addi s0,sp,32
18: 1106 slli sp,sp,0x21
1a: 1201 addi tp,tp,-32
1c: 0301 addi t1,t1,0
1e: 1b0e slli s6,s6,0x23
20: 250e fld fa0,192(sp)
22: 130e slli t1,t1,0x23
24: 0005 c.nop 1
...
Disassembly of section .debug_aranges:
00000000 <.debug_aranges>:
0: 001c 0x1c
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0004 0x4
c: 0000 unimp
e: 0000 unimp
10: 15f8 addi a4,sp,748
12: 0000 unimp
14: 0024 addi s1,sp,8
...
1e: 0000 unimp
20: 001c 0x1c
22: 0000 unimp
24: 0002 c.slli64 zero
26: 0026 c.slli zero,0x9
28: 0000 unimp
2a: 0004 0x4
2c: 0000 unimp
2e: 0000 unimp
30: 161c addi a5,sp,800
32: 0000 unimp
34: 00b4 addi a3,sp,72
...
Disassembly of section .debug_str:
00000000 <.debug_str>:
0: 2e2e fld ft8,200(sp)
2: 2f2e2e2f 0x2f2e2e2f
6: 2e2e fld ft8,200(sp)
8: 722f2e2f 0x722f2e2f
c: 7369 lui t1,0xffffa
e: 672d7663 bgeu s10,s2,67a <printInt-0x986>
12: 6c2f6363 bltu t5,sp,6d8 <printInt-0x928>
16: 6269 lui tp,0x1a
18: 2f636367 0x2f636367
1c: 666e6f63 bltu t3,t1,69a <printInt-0x966>
20: 6769 lui a4,0x1a
22: 7369722f 0x7369722f
26: 6d2f7663 bgeu t5,s2,6f2 <printInt-0x90e>
2a: 6c75 lui s8,0x1d
2c: 6964 flw fs1,84(a0)
2e: 00532e33 slt t3,t1,t0
32: 6d6f682f 0x6d6f682f
36: 2f65 jal 7ee <printInt-0x812>
38: 712d7577 0x712d7577
3c: 6e69 lui t3,0x1a
3e: 35312d67 0x35312d67
42: 69722f37 lui t5,0x69722
46: 2d766373 csrrsi t1,0x2d7,12
4a: 2d756e67 0x2d756e67
4e: 6f74 flw fa3,92(a4)
50: 68636c6f jal s8,366d6 <__heap_start+0x346d6>
54: 6961 lui s2,0x18
56: 2f6e fld ft10,216(sp)
58: 7562 flw fa0,56(sp)
5a: 6c69 lui s8,0x1a
5c: 2d64 fld fs1,216(a0)
5e: 2d636367 0x2d636367
62: 656e flw fa0,216(sp)
64: 62696c77 0x62696c77
68: 732d lui t1,0xfffeb
6a: 6174 flw fa3,68(a0)
6c: 2f326567 0x2f326567
70: 6972 flw fs2,28(sp)
72: 33766373 csrrsi t1,mhpmevent23,12
76: 2d32 fld fs10,264(sp)
78: 6e75 lui t3,0x1d
7a: 776f6e6b 0x776f6e6b
7e: 2d6e fld fs10,216(sp)
80: 6c65 lui s8,0x19
82: 2f66 fld ft10,88(sp)
84: 696c flw fa1,84(a0)
86: 6762 flw fa4,24(sp)
88: 47006363 bltu zero,a6,4ee <printInt-0xb12>
8c: 554e lw a0,240(sp)
8e: 4120 lw s0,64(a0)
90: 2e322053 0x2e322053
94: 312e3133 0x312e3133
98: 2e00 fld fs0,24(a2)
9a: 2f2e fld ft10,200(sp)
9c: 2e2e fld ft8,200(sp)
9e: 2f2e2e2f 0x2f2e2e2f
a2: 2f2e fld ft10,200(sp)
a4: 6972 flw fs2,28(sp)
a6: 2d766373 csrrsi t1,0x2d7,12
aa: 2f636367 0x2f636367
ae: 696c flw fa1,84(a0)
b0: 6762 flw fa4,24(sp)
b2: 632f6363 bltu t5,s2,6d8 <printInt-0x928>
b6: 69666e6f jal t3,6674c <__heap_start+0x6474c>
ba: 69722f67 0x69722f67
be: 2f766373 csrrsi t1,0x2f7,12
c2: 6964 flw fs1,84(a0)
c4: 2e76 fld ft8,344(sp)
c6: fadd.s ft0,ft0,ft0,rne

117
test/testcases/expr.c Normal file
View File

@ -0,0 +1,117 @@
#include "io.inc"
// This file use massive recursive expression to test: Common Expression
// substitution. For my optimized version: All: 1397 Load:
// 86 Store: 55 Jumped: 23 For my unoptimized version: All: 24519
// Load: 12183 Store: 55 Jumped: 23 A better result is welcomed. ------
// From JinTianxing.
int A = 1;
int B = 1;
int C = 1;
int main() {
while (C < (1 << 29) && C > -(1 << 29)) {
A = ((((((((C - A + B) - (A + B)) + ((C - A + B) - (A + B))) +
(((C - A + B) - (A + B)) + (C - A + B))) -
((((A + B) + (C - A + B)) - (A + B)) +
(((C - A + B) - (A + B)) + (C - A + B)))) -
(((((A + B) + (C - A + B)) - ((A + B) + (C - A + B))) -
(((A + B) + (C - A + B)) - (A + B))) +
((((C - A + B) - (A + B)) + (C - A + B)) -
(((A + B) + (C - A + B)) - (A + B))))) +
((((((C - A + B) - (A + B)) + ((C - A + B) - (A + B))) +
(((C - A + B) - (A + B)) + (C - A + B))) -
((((A + B) + (C - A + B)) - (A + B)) +
(((C - A + B) - (A + B)) + (C - A + B)))) -
(((((A + B) + (C - A + B)) - (A + B)) +
(((C - A + B) - (A + B)) + (C - A + B))) -
((((A + B) + (C - A + B)) - (A + B)) +
(((C - A + B) - (A + B)) + (C - A + B)))))) -
(((((((A + B) + (C - A + B)) - ((A + B) + (C - A + B))) -
(((A + B) + (C - A + B)) - (A + B))) +
((((C - A + B) - (A + B)) + (C - A + B)) -
(((A + B) + (C - A + B)) - (A + B)))) +
(((((C - A + B) - (A + B)) + (C - A + B)) -
(((A + B) + (C - A + B)) - (A + B))) +
((((C - A + B) - (A + B)) + (C - A + B)) -
(((A + B) + (C - A + B)) - (A + B))))) +
((((((C - A + B) - (A + B)) + ((C - A + B) - (A + B))) +
(((C - A + B) - (A + B)) + (C - A + B))) -
((((A + B) + (C - A + B)) - (A + B)) +
(((C - A + B) - (A + B)) + (C - A + B)))) -
(((((A + B) + (C - A + B)) - (A + B)) +
(((C - A + B) - (A + B)) + (C - A + B))) -
((((A + B) + (C - A + B)) - (A + B)) +
(((C - A + B) - (A + B)) + (C - A + B)))))));
B = ((((((((C - A + B) - (A + B)) + ((C - A + B) - (A + B))) +
(((C - A + B) - (A + B)) + (C - A + B))) -
((((A + B) + (C - A + B)) - (A + B)) +
(((C - A + B) - (A + B)) + (C - A + B)))) -
(((((A + B) + (C - A + B)) - ((A + B) + (C - A + B))) -
(((A + B) + (C - A + B)) - (A + B))) +
((((C - A + B) - (A + B)) + (C - A + B)) -
(((A + B) + (C - A + B)) - (A + B))))) +
((((((C - A + B) - (A + B)) + ((C - A + B) - (A + B))) +
(((C - A + B) - (A + B)) + (C - A + B))) -
((((A + B) + (C - A + B)) - (A + B)) +
(((C - A + B) - (A + B)) + (C - A + B)))) -
(((((A + B) + (C - A + B)) - (A + B)) +
(((C - A + B) - (A + B)) + (C - A + B))) -
((((A + B) + (C - A + B)) - (A + B)) +
(((C - A + B) - (A + B)) + (C - A + B)))))) -
(((((((A + B) + (C - A + B)) - ((A + B) + (C - A + B))) -
(((A + B) + (C - A + B)) - (A + B))) +
((((C - A + B) - (A + B)) + (C - A + B)) -
(((A + B) + (C - A + B)) - (A + B)))) +
(((((C - A + B) - (A + B)) + (C - A + B)) -
(((A + B) + (C - A + B)) - (A + B))) +
((((C - A + B) - (A + B)) + (C - A + B)) -
(((A + B) + (C - A + B)) - (A + B))))) +
((((((C - A + B) - (A + B)) + ((C - A + B) - (A + B))) +
(((C - A + B) - (A + B)) + (C - A + B))) -
((((A + B) + (C - A + B)) - (A + B)) +
(((C - A + B) - (A + B)) + (C - A + B)))) -
(((((A + B) + (C - A + B)) - (A + B)) +
(((C - A + B) - (A + B)) + (C - A + B))) -
((((A + B) + (C - A + B)) - (A + B)) +
(((C - A + B) - (A + B)) + (C - A + B)))))));
C = ((((((((C - A + B) - (A + B)) + ((C - A + B) - (A + B))) +
(((C - A + B) - (A + B)) + (C - A + B))) -
((((A + B) + (C - A + B)) - (A + B)) +
(((C - A + B) - (A + B)) + (C - A + B)))) -
(((((A + B) + (C - A + B)) - ((A + B) + (C - A + B))) -
(((A + B) + (C - A + B)) - (A + B))) +
((((C - A + B) - (A + B)) + (C - A + B)) -
(((A + B) + (C - A + B)) - (A + B))))) +
((((((C - A + B) - (A + B)) + ((C - A + B) - (A + B))) +
(((C - A + B) - (A + B)) + (C - A + B))) -
((((A + B) + (C - A + B)) - (A + B)) +
(((C - A + B) - (A + B)) + (C - A + B)))) -
(((((A + B) + (C - A + B)) - (A + B)) +
(((C - A + B) - (A + B)) + (C - A + B))) -
((((A + B) + (C - A + B)) - (A + B)) +
(((C - A + B) - (A + B)) + (C - A + B)))))) -
(((((((A + B) + (C - A + B)) - ((A + B) + (C - A + B))) -
(((A + B) + (C - A + B)) - (A + B))) +
((((C - A + B) - (A + B)) + (C - A + B)) -
(((A + B) + (C - A + B)) - (A + B)))) +
(((((C - A + B) - (A + B)) + (C - A + B)) -
(((A + B) + (C - A + B)) - (A + B))) +
((((C - A + B) - (A + B)) + (C - A + B)) -
(((A + B) + (C - A + B)) - (A + B))))) +
((((((C - A + B) - (A + B)) + ((C - A + B) - (A + B))) +
(((C - A + B) - (A + B)) + (C - A + B))) -
((((A + B) + (C - A + B)) - (A + B)) +
(((C - A + B) - (A + B)) + (C - A + B)))) -
(((((A + B) + (C - A + B)) - (A + B)) +
(((C - A + B) - (A + B)) + (C - A + B))) -
((((A + B) + (C - A + B)) - (A + B)) +
(((C - A + B) - (A + B)) + (C - A + B)))))));
}
printInt(A);
// print(" ");
printInt(B);
// print(" ");
printInt(C);
return judgeResult % Mod; // 58
}

37
test/testcases/expr.data Normal file
View File

@ -0,0 +1,37 @@
@00000000
37 01 02 00 EF 10 00 04 13 05 F0 0F B7 06 03 00
23 82 A6 00 6F F0 9F FF
@00001000
37 17 00 00 83 27 07 1E 33 45 F5 00 13 05 D5 0A
23 20 A7 1E 67 80 00 00 83 47 05 00 63 82 07 02
37 17 00 00 83 26 07 1E B3 C7 D7 00 93 87 97 20
23 20 F7 1E 13 05 15 00 83 47 05 00 E3 94 07 FE
67 80 00 00 13 01 01 FF 23 26 11 00 B7 17 00 00
83 A7 47 1D 37 07 00 20 13 07 F7 FF 33 87 E7 00
B7 06 00 40 93 86 E6 FF 63 EA E6 06 37 17 00 00
03 27 C7 1D B7 16 00 00 83 A6 86 1D 37 05 00 20
13 05 F5 FF B7 05 00 40 93 85 E5 FF 33 86 E7 40
33 07 E6 40 33 06 D6 00 13 17 17 00 33 07 E6 40
B3 87 E7 40 33 86 E7 40 13 16 16 00 B3 86 D7 00
B3 86 C6 40 B3 87 D7 00 B3 87 C7 40 33 86 A7 00
E3 F6 C5 FC 37 16 00 00 23 2E E6 1C 37 17 00 00
23 2C D7 1C 37 17 00 00 23 2A F7 1C B7 17 00 00
03 A5 C7 1D EF F0 DF F1 B7 17 00 00 03 A5 87 1D
EF F0 1F F1 B7 17 00 00 03 A5 47 1D EF F0 5F F0
93 05 D0 0F B7 17 00 00 03 A5 07 1E EF 00 40 09
83 20 C1 00 13 01 01 01 67 80 00 00 63 40 05 06
63 C6 05 06 13 86 05 00 93 05 05 00 13 05 F0 FF
63 0C 06 02 93 06 10 00 63 7A B6 00 63 58 C0 00
13 16 16 00 93 96 16 00 E3 6A B6 FE 13 05 00 00
63 E6 C5 00 B3 85 C5 40 33 65 D5 00 93 D6 16 00
13 56 16 00 E3 96 06 FE 67 80 00 00 93 82 00 00
EF F0 5F FB 13 85 05 00 67 80 02 00 33 05 A0 40
63 D8 05 00 B3 05 B0 40 6F F0 DF F9 B3 05 B0 40
93 82 00 00 EF F0 1F F9 33 05 A0 40 67 80 02 00
93 82 00 00 63 CA 05 00 63 4C 05 00 EF F0 9F F7
13 85 05 00 67 80 02 00 B3 05 B0 40 E3 58 05 FE
33 05 A0 40 EF F0 1F F6 33 05 B0 40 67 80 02 00
@000011D0
FD 00 00 00
@000011D4
01 00 00 00 01 00 00 00 01 00 00 00

423
test/testcases/expr.dump Normal file
View File

@ -0,0 +1,423 @@
./test/test.om: file format elf32-littleriscv
Disassembly of section .rom:
00000000 <.rom>:
0: 00020137 lui sp,0x20
4: 040010ef jal ra,1044 <main>
8: 0ff00513 li a0,255
c: 000306b7 lui a3,0x30
10: 00a68223 sb a0,4(a3) # 30004 <__heap_start+0x2e004>
14: ff9ff06f j c <printInt-0xff4>
Disassembly of section .text:
00001000 <printInt>:
1000: 00001737 lui a4,0x1
1004: 1e072783 lw a5,480(a4) # 11e0 <__bss_end>
1008: 00f54533 xor a0,a0,a5
100c: 0ad50513 addi a0,a0,173
1010: 1ea72023 sw a0,480(a4)
1014: 00008067 ret
00001018 <printStr>:
1018: 00054783 lbu a5,0(a0)
101c: 02078263 beqz a5,1040 <printStr+0x28>
1020: 00001737 lui a4,0x1
1024: 1e072683 lw a3,480(a4) # 11e0 <__bss_end>
1028: 00d7c7b3 xor a5,a5,a3
102c: 20978793 addi a5,a5,521
1030: 1ef72023 sw a5,480(a4)
1034: 00150513 addi a0,a0,1
1038: 00054783 lbu a5,0(a0)
103c: fe0794e3 bnez a5,1024 <printStr+0xc>
1040: 00008067 ret
00001044 <main>:
1044: ff010113 addi sp,sp,-16 # 1fff0 <__heap_start+0x1dff0>
1048: 00112623 sw ra,12(sp)
104c: 000017b7 lui a5,0x1
1050: 1d47a783 lw a5,468(a5) # 11d4 <__bss_start>
1054: 20000737 lui a4,0x20000
1058: fff70713 addi a4,a4,-1 # 1fffffff <__heap_start+0x1fffdfff>
105c: 00e78733 add a4,a5,a4
1060: 400006b7 lui a3,0x40000
1064: ffe68693 addi a3,a3,-2 # 3ffffffe <__heap_start+0x3fffdffe>
1068: 06e6ea63 bltu a3,a4,10dc <main+0x98>
106c: 00001737 lui a4,0x1
1070: 1dc72703 lw a4,476(a4) # 11dc <A>
1074: 000016b7 lui a3,0x1
1078: 1d86a683 lw a3,472(a3) # 11d8 <B>
107c: 20000537 lui a0,0x20000
1080: fff50513 addi a0,a0,-1 # 1fffffff <__heap_start+0x1fffdfff>
1084: 400005b7 lui a1,0x40000
1088: ffe58593 addi a1,a1,-2 # 3ffffffe <__heap_start+0x3fffdffe>
108c: 40e78633 sub a2,a5,a4
1090: 40e60733 sub a4,a2,a4
1094: 00d60633 add a2,a2,a3
1098: 00171713 slli a4,a4,0x1
109c: 40e60733 sub a4,a2,a4
10a0: 40e787b3 sub a5,a5,a4
10a4: 40e78633 sub a2,a5,a4
10a8: 00161613 slli a2,a2,0x1
10ac: 00d786b3 add a3,a5,a3
10b0: 40c686b3 sub a3,a3,a2
10b4: 00d787b3 add a5,a5,a3
10b8: 40c787b3 sub a5,a5,a2
10bc: 00a78633 add a2,a5,a0
10c0: fcc5f6e3 bgeu a1,a2,108c <main+0x48>
10c4: 00001637 lui a2,0x1
10c8: 1ce62e23 sw a4,476(a2) # 11dc <A>
10cc: 00001737 lui a4,0x1
10d0: 1cd72c23 sw a3,472(a4) # 11d8 <B>
10d4: 00001737 lui a4,0x1
10d8: 1cf72a23 sw a5,468(a4) # 11d4 <__bss_start>
10dc: 000017b7 lui a5,0x1
10e0: 1dc7a503 lw a0,476(a5) # 11dc <A>
10e4: f1dff0ef jal ra,1000 <printInt>
10e8: 000017b7 lui a5,0x1
10ec: 1d87a503 lw a0,472(a5) # 11d8 <B>
10f0: f11ff0ef jal ra,1000 <printInt>
10f4: 000017b7 lui a5,0x1
10f8: 1d47a503 lw a0,468(a5) # 11d4 <__bss_start>
10fc: f05ff0ef jal ra,1000 <printInt>
1100: 0fd00593 li a1,253
1104: 000017b7 lui a5,0x1
1108: 1e07a503 lw a0,480(a5) # 11e0 <__bss_end>
110c: 094000ef jal ra,11a0 <__modsi3>
1110: 00c12083 lw ra,12(sp)
1114: 01010113 addi sp,sp,16
1118: 00008067 ret
0000111c <__divsi3>:
111c: 06054063 bltz a0,117c <__umodsi3+0x10>
1120: 0605c663 bltz a1,118c <__umodsi3+0x20>
00001124 <__udivsi3>:
1124: 00058613 mv a2,a1
1128: 00050593 mv a1,a0
112c: fff00513 li a0,-1
1130: 02060c63 beqz a2,1168 <__udivsi3+0x44>
1134: 00100693 li a3,1
1138: 00b67a63 bgeu a2,a1,114c <__udivsi3+0x28>
113c: 00c05863 blez a2,114c <__udivsi3+0x28>
1140: 00161613 slli a2,a2,0x1
1144: 00169693 slli a3,a3,0x1
1148: feb66ae3 bltu a2,a1,113c <__udivsi3+0x18>
114c: 00000513 li a0,0
1150: 00c5e663 bltu a1,a2,115c <__udivsi3+0x38>
1154: 40c585b3 sub a1,a1,a2
1158: 00d56533 or a0,a0,a3
115c: 0016d693 srli a3,a3,0x1
1160: 00165613 srli a2,a2,0x1
1164: fe0696e3 bnez a3,1150 <__udivsi3+0x2c>
1168: 00008067 ret
0000116c <__umodsi3>:
116c: 00008293 mv t0,ra
1170: fb5ff0ef jal ra,1124 <__udivsi3>
1174: 00058513 mv a0,a1
1178: 00028067 jr t0
117c: 40a00533 neg a0,a0
1180: 0005d863 bgez a1,1190 <__umodsi3+0x24>
1184: 40b005b3 neg a1,a1
1188: f9dff06f j 1124 <__udivsi3>
118c: 40b005b3 neg a1,a1
1190: 00008293 mv t0,ra
1194: f91ff0ef jal ra,1124 <__udivsi3>
1198: 40a00533 neg a0,a0
119c: 00028067 jr t0
000011a0 <__modsi3>:
11a0: 00008293 mv t0,ra
11a4: 0005ca63 bltz a1,11b8 <__modsi3+0x18>
11a8: 00054c63 bltz a0,11c0 <__modsi3+0x20>
11ac: f79ff0ef jal ra,1124 <__udivsi3>
11b0: 00058513 mv a0,a1
11b4: 00028067 jr t0
11b8: 40b005b3 neg a1,a1
11bc: fe0558e3 bgez a0,11ac <__modsi3+0xc>
11c0: 40a00533 neg a0,a0
11c4: f61ff0ef jal ra,1124 <__udivsi3>
11c8: 40b00533 neg a0,a1
11cc: 00028067 jr t0
Disassembly of section .srodata:
000011d0 <Mod>:
11d0: 00fd addi ra,ra,31
...
Disassembly of section .sdata:
000011d4 <C>:
11d4: 0001 nop
...
000011d8 <B>:
11d8: 0001 nop
...
000011dc <A>:
11dc: 0001 nop
...
Disassembly of section .sbss:
000011e0 <judgeResult>:
11e0: 0000 unimp
...
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 fmsub.d ft6,ft6,ft4,ft7,rmm
4: 2820 fld fs0,80(s0)
6: 29554e47 fmsub.s ft8,fa0,fs5,ft5,rmm
a: 3820 fld fs0,112(s0)
c: 332e fld ft6,232(sp)
e: 302e fld ft0,232(sp)
...
Disassembly of section .debug_line:
00000000 <.debug_line>:
0: 0164 addi s1,sp,140
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0045 c.nop 17
8: 0000 unimp
a: 0101 addi sp,sp,0
c: 000d0efb 0xd0efb
10: 0101 addi sp,sp,0
12: 0101 addi sp,sp,0
14: 0000 unimp
16: 0100 addi s0,sp,128
18: 0000 unimp
1a: 2e01 jal 32a <printInt-0xcd6>
1c: 2f2e fld ft10,200(sp)
1e: 2e2e fld ft8,200(sp)
20: 2f2e2e2f 0x2f2e2e2f
24: 2f2e fld ft10,200(sp)
26: 6972 flw fs2,28(sp)
28: 2d766373 csrrsi t1,0x2d7,12
2c: 2f636367 0x2f636367
30: 696c flw fa1,84(a0)
32: 6762 flw fa4,24(sp)
34: 632f6363 bltu t5,s2,65a <printInt-0x9a6>
38: 69666e6f jal t3,666ce <__heap_start+0x646ce>
3c: 69722f67 0x69722f67
40: 00766373 csrrsi t1,0x7,12
44: 6400 flw fs0,8(s0)
46: 7669 lui a2,0xffffa
48: 532e lw t1,232(sp)
4a: 0100 addi s0,sp,128
4c: 0000 unimp
4e: 0000 unimp
50: 0205 addi tp,tp,1
52: 111c addi a5,sp,160
54: 0000 unimp
56: 0100c403 lbu s0,16(ra)
5a: 04090103 lb sp,64(s2)
5e: 0100 addi s0,sp,128
60: 04090403 lb s0,64(s2)
64: 0100 addi s0,sp,128
66: 04090103 lb sp,64(s2)
6a: 0100 addi s0,sp,128
6c: 04090103 lb sp,64(s2)
70: 0100 addi s0,sp,128
72: 04090103 lb sp,64(s2)
76: 0100 addi s0,sp,128
78: 04090103 lb sp,64(s2)
7c: 0100 addi s0,sp,128
7e: 04090103 lb sp,64(s2)
82: 0100 addi s0,sp,128
84: 04090203 lb tp,64(s2)
88: 0100 addi s0,sp,128
8a: 04090103 lb sp,64(s2)
8e: 0100 addi s0,sp,128
90: 04090103 lb sp,64(s2)
94: 0100 addi s0,sp,128
96: 04090103 lb sp,64(s2)
9a: 0100 addi s0,sp,128
9c: 04090203 lb tp,64(s2)
a0: 0100 addi s0,sp,128
a2: 04090203 lb tp,64(s2)
a6: 0100 addi s0,sp,128
a8: 04090103 lb sp,64(s2)
ac: 0100 addi s0,sp,128
ae: 04090103 lb sp,64(s2)
b2: 0100 addi s0,sp,128
b4: 04090203 lb tp,64(s2)
b8: 0100 addi s0,sp,128
ba: 04090103 lb sp,64(s2)
be: 0100 addi s0,sp,128
c0: 04090103 lb sp,64(s2)
c4: 0100 addi s0,sp,128
c6: 04090203 lb tp,64(s2)
ca: 0100 addi s0,sp,128
cc: 04090503 lb a0,64(s2)
d0: 0100 addi s0,sp,128
d2: 04090103 lb sp,64(s2)
d6: 0100 addi s0,sp,128
d8: 04090103 lb sp,64(s2)
dc: 0100 addi s0,sp,128
de: 04090103 lb sp,64(s2)
e2: 0100 addi s0,sp,128
e4: 04090503 lb a0,64(s2)
e8: 0100 addi s0,sp,128
ea: 04090103 lb sp,64(s2)
ee: 0100 addi s0,sp,128
f0: 04090103 lb sp,64(s2)
f4: 0100 addi s0,sp,128
f6: 04090103 lb sp,64(s2)
fa: 0100 addi s0,sp,128
fc: 04090203 lb tp,64(s2)
100: 0100 addi s0,sp,128
102: 04090203 lb tp,64(s2)
106: 0100 addi s0,sp,128
108: 04090103 lb sp,64(s2)
10c: 0100 addi s0,sp,128
10e: 04090103 lb sp,64(s2)
112: 0100 addi s0,sp,128
114: 04090103 lb sp,64(s2)
118: 0100 addi s0,sp,128
11a: 04090403 lb s0,64(s2)
11e: 0100 addi s0,sp,128
120: 04090103 lb sp,64(s2)
124: 0100 addi s0,sp,128
126: 04090103 lb sp,64(s2)
12a: 0100 addi s0,sp,128
12c: 04090203 lb tp,64(s2)
130: 0100 addi s0,sp,128
132: 04090103 lb sp,64(s2)
136: 0100 addi s0,sp,128
138: 04090103 lb sp,64(s2)
13c: 0100 addi s0,sp,128
13e: 04090203 lb tp,64(s2)
142: 0100 addi s0,sp,128
144: 04090103 lb sp,64(s2)
148: 0100 addi s0,sp,128
14a: 04090203 lb tp,64(s2)
14e: 0100 addi s0,sp,128
150: 04090103 lb sp,64(s2)
154: 0100 addi s0,sp,128
156: 04090103 lb sp,64(s2)
15a: 0100 addi s0,sp,128
15c: 04090103 lb sp,64(s2)
160: 0100 addi s0,sp,128
162: 0409 addi s0,s0,2
164: 0000 unimp
166: 0101 addi sp,sp,0
Disassembly of section .debug_info:
00000000 <.debug_info>:
0: 0022 c.slli zero,0x8
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0104 addi s1,sp,128
c: 0000 unimp
e: 0000 unimp
10: 111c addi a5,sp,160
12: 0000 unimp
14: 11d0 addi a2,sp,228
16: 0000 unimp
18: 0000 unimp
1a: 0000 unimp
1c: 0000002f 0x2f
20: 0088 addi a0,sp,64
22: 0000 unimp
24: 8001 c.srli64 s0
Disassembly of section .debug_abbrev:
00000000 <.debug_abbrev>:
0: 1101 addi sp,sp,-32
2: 1000 addi s0,sp,32
4: 1106 slli sp,sp,0x21
6: 1201 addi tp,tp,-32
8: 0301 addi t1,t1,0
a: 1b0e slli s6,s6,0x23
c: 250e fld fa0,192(sp)
e: 130e slli t1,t1,0x23
10: 0005 c.nop 1
...
Disassembly of section .debug_aranges:
00000000 <.debug_aranges>:
0: 001c 0x1c
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0004 0x4
c: 0000 unimp
e: 0000 unimp
10: 111c addi a5,sp,160
12: 0000 unimp
14: 00b4 addi a3,sp,72
...
Disassembly of section .debug_str:
00000000 <.debug_str>:
0: 2e2e fld ft8,200(sp)
2: 2f2e2e2f 0x2f2e2e2f
6: 2e2e fld ft8,200(sp)
8: 722f2e2f 0x722f2e2f
c: 7369 lui t1,0xffffa
e: 672d7663 bgeu s10,s2,67a <printInt-0x986>
12: 6c2f6363 bltu t5,sp,6d8 <printInt-0x928>
16: 6269 lui tp,0x1a
18: 2f636367 0x2f636367
1c: 666e6f63 bltu t3,t1,69a <printInt-0x966>
20: 6769 lui a4,0x1a
22: 7369722f 0x7369722f
26: 642f7663 bgeu t5,sp,672 <printInt-0x98e>
2a: 7669 lui a2,0xffffa
2c: 532e lw t1,232(sp)
2e: 2f00 fld fs0,24(a4)
30: 6f68 flw fa0,92(a4)
32: 656d lui a0,0x1b
34: 2d75772f 0x2d75772f
38: 6971 lui s2,0x1c
3a: 676e flw fa4,216(sp)
3c: 312d jal fffffc66 <__heap_start+0xffffdc66>
3e: 3735 jal ffffff6a <__heap_start+0xffffdf6a>
40: 7369722f 0x7369722f
44: 672d7663 bgeu s10,s2,6b0 <printInt-0x950>
48: 756e flw fa0,248(sp)
4a: 742d lui s0,0xfffeb
4c: 636c6f6f jal t5,c6682 <__heap_start+0xc4682>
50: 6168 flw fa0,68(a0)
52: 6e69 lui t3,0x1a
54: 6975622f 0x6975622f
58: 646c flw fa1,76(s0)
5a: 672d lui a4,0xb
5c: 6e2d6363 bltu s10,sp,742 <printInt-0x8be>
60: 7765 lui a4,0xffff9
62: 696c flw fa1,84(a0)
64: 2d62 fld fs10,24(sp)
66: 67617473 csrrci s0,0x676,2
6a: 3265 jal fffffa12 <__heap_start+0xffffda12>
6c: 7369722f 0x7369722f
70: 32337663 bgeu t1,gp,39c <printInt-0xc64>
74: 752d lui a0,0xfffeb
76: 6b6e flw fs6,216(sp)
78: 6f6e flw ft10,216(sp)
7a: 652d6e77 0x652d6e77
7e: 666c flw fa1,76(a2)
80: 62696c2f 0x62696c2f
84: 00636367 0x636367
88: 20554e47 fmsub.s ft8,fa0,ft5,ft4,rmm
8c: 5341 li t1,-16
8e: 3220 fld fs0,96(a2)
90: 332e fld ft6,232(sp)
92: 2e31 jal 3ae <printInt-0xc52>
94: 0031 c.nop 12

15
test/testcases/gcd.c Normal file
View File

@ -0,0 +1,15 @@
#include "io.inc"
int gcd(int x, int y) {
if (x % y == 0)
return y;
else
return gcd(y, x % y);
}
int main() {
printInt(gcd(10, 1));
printInt(gcd(34986, 3087));
printInt(gcd(2907, 1539));
return judgeResult % Mod; // 178
}

32
test/testcases/gcd.data Normal file
View File

@ -0,0 +1,32 @@
@00000000
37 01 02 00 EF 10 00 08 13 05 F0 0F B7 06 03 00
23 82 A6 00 6F F0 9F FF
@00001000
37 17 00 00 83 27 07 1A 33 45 F5 00 13 05 D5 0A
23 20 A7 1A 67 80 00 00 83 47 05 00 63 82 07 02
37 17 00 00 83 26 07 1A B3 C7 D7 00 93 87 97 20
23 20 F7 1A 13 05 15 00 83 47 05 00 E3 94 07 FE
67 80 00 00 13 01 01 FF 23 26 11 00 23 24 81 00
13 84 05 00 EF 00 80 11 63 1C 05 00 13 05 04 00
83 20 C1 00 03 24 81 00 13 01 01 01 67 80 00 00
93 05 05 00 13 05 04 00 EF F0 DF FC 13 04 05 00
6F F0 DF FD 13 01 01 FF 23 26 11 00 23 24 81 00
93 05 10 00 13 05 A0 00 EF F0 DF FA EF F0 5F F6
37 14 00 00 93 05 F4 C0 37 95 00 00 13 05 A5 8A
EF F0 5F F9 EF F0 DF F4 93 05 30 60 13 05 B4 B5
EF F0 5F F8 EF F0 DF F3 93 05 D0 0F B7 17 00 00
03 A5 07 1A EF 00 80 09 83 20 C1 00 03 24 81 00
13 01 01 01 67 80 00 00 63 40 05 06 63 C6 05 06
13 86 05 00 93 05 05 00 13 05 F0 FF 63 0C 06 02
93 06 10 00 63 7A B6 00 63 58 C0 00 13 16 16 00
93 96 16 00 E3 6A B6 FE 13 05 00 00 63 E6 C5 00
B3 85 C5 40 33 65 D5 00 93 D6 16 00 13 56 16 00
E3 96 06 FE 67 80 00 00 93 82 00 00 EF F0 5F FB
13 85 05 00 67 80 02 00 33 05 A0 40 63 D8 05 00
B3 05 B0 40 6F F0 DF F9 B3 05 B0 40 93 82 00 00
EF F0 1F F9 33 05 A0 40 67 80 02 00 93 82 00 00
63 CA 05 00 63 4C 05 00 EF F0 9F F7 13 85 05 00
67 80 02 00 B3 05 B0 40 E3 58 05 FE 33 05 A0 40
EF F0 1F F6 33 05 B0 40 67 80 02 00
@0000119C
FD 00 00 00

398
test/testcases/gcd.dump Normal file
View File

@ -0,0 +1,398 @@
./test/test.om: file format elf32-littleriscv
Disassembly of section .rom:
00000000 <.rom>:
0: 00020137 lui sp,0x20
4: 080010ef jal ra,1084 <main>
8: 0ff00513 li a0,255
c: 000306b7 lui a3,0x30
10: 00a68223 sb a0,4(a3) # 30004 <__heap_start+0x2e004>
14: ff9ff06f j c <printInt-0xff4>
Disassembly of section .text:
00001000 <printInt>:
1000: 00001737 lui a4,0x1
1004: 1a072783 lw a5,416(a4) # 11a0 <__bss_end>
1008: 00f54533 xor a0,a0,a5
100c: 0ad50513 addi a0,a0,173
1010: 1aa72023 sw a0,416(a4)
1014: 00008067 ret
00001018 <printStr>:
1018: 00054783 lbu a5,0(a0)
101c: 02078263 beqz a5,1040 <printStr+0x28>
1020: 00001737 lui a4,0x1
1024: 1a072683 lw a3,416(a4) # 11a0 <__bss_end>
1028: 00d7c7b3 xor a5,a5,a3
102c: 20978793 addi a5,a5,521
1030: 1af72023 sw a5,416(a4)
1034: 00150513 addi a0,a0,1
1038: 00054783 lbu a5,0(a0)
103c: fe0794e3 bnez a5,1024 <printStr+0xc>
1040: 00008067 ret
00001044 <gcd>:
1044: ff010113 addi sp,sp,-16 # 1fff0 <__heap_start+0x1dff0>
1048: 00112623 sw ra,12(sp)
104c: 00812423 sw s0,8(sp)
1050: 00058413 mv s0,a1
1054: 118000ef jal ra,116c <__modsi3>
1058: 00051c63 bnez a0,1070 <gcd+0x2c>
105c: 00040513 mv a0,s0
1060: 00c12083 lw ra,12(sp)
1064: 00812403 lw s0,8(sp)
1068: 01010113 addi sp,sp,16
106c: 00008067 ret
1070: 00050593 mv a1,a0
1074: 00040513 mv a0,s0
1078: fcdff0ef jal ra,1044 <gcd>
107c: 00050413 mv s0,a0
1080: fddff06f j 105c <gcd+0x18>
00001084 <main>:
1084: ff010113 addi sp,sp,-16
1088: 00112623 sw ra,12(sp)
108c: 00812423 sw s0,8(sp)
1090: 00100593 li a1,1
1094: 00a00513 li a0,10
1098: fadff0ef jal ra,1044 <gcd>
109c: f65ff0ef jal ra,1000 <printInt>
10a0: 00001437 lui s0,0x1
10a4: c0f40593 addi a1,s0,-1009 # c0f <printInt-0x3f1>
10a8: 00009537 lui a0,0x9
10ac: 8aa50513 addi a0,a0,-1878 # 88aa <__heap_start+0x68aa>
10b0: f95ff0ef jal ra,1044 <gcd>
10b4: f4dff0ef jal ra,1000 <printInt>
10b8: 60300593 li a1,1539
10bc: b5b40513 addi a0,s0,-1189
10c0: f85ff0ef jal ra,1044 <gcd>
10c4: f3dff0ef jal ra,1000 <printInt>
10c8: 0fd00593 li a1,253
10cc: 000017b7 lui a5,0x1
10d0: 1a07a503 lw a0,416(a5) # 11a0 <__bss_end>
10d4: 098000ef jal ra,116c <__modsi3>
10d8: 00c12083 lw ra,12(sp)
10dc: 00812403 lw s0,8(sp)
10e0: 01010113 addi sp,sp,16
10e4: 00008067 ret
000010e8 <__divsi3>:
10e8: 06054063 bltz a0,1148 <__umodsi3+0x10>
10ec: 0605c663 bltz a1,1158 <__umodsi3+0x20>
000010f0 <__udivsi3>:
10f0: 00058613 mv a2,a1
10f4: 00050593 mv a1,a0
10f8: fff00513 li a0,-1
10fc: 02060c63 beqz a2,1134 <__udivsi3+0x44>
1100: 00100693 li a3,1
1104: 00b67a63 bgeu a2,a1,1118 <__udivsi3+0x28>
1108: 00c05863 blez a2,1118 <__udivsi3+0x28>
110c: 00161613 slli a2,a2,0x1
1110: 00169693 slli a3,a3,0x1
1114: feb66ae3 bltu a2,a1,1108 <__udivsi3+0x18>
1118: 00000513 li a0,0
111c: 00c5e663 bltu a1,a2,1128 <__udivsi3+0x38>
1120: 40c585b3 sub a1,a1,a2
1124: 00d56533 or a0,a0,a3
1128: 0016d693 srli a3,a3,0x1
112c: 00165613 srli a2,a2,0x1
1130: fe0696e3 bnez a3,111c <__udivsi3+0x2c>
1134: 00008067 ret
00001138 <__umodsi3>:
1138: 00008293 mv t0,ra
113c: fb5ff0ef jal ra,10f0 <__udivsi3>
1140: 00058513 mv a0,a1
1144: 00028067 jr t0
1148: 40a00533 neg a0,a0
114c: 0005d863 bgez a1,115c <__umodsi3+0x24>
1150: 40b005b3 neg a1,a1
1154: f9dff06f j 10f0 <__udivsi3>
1158: 40b005b3 neg a1,a1
115c: 00008293 mv t0,ra
1160: f91ff0ef jal ra,10f0 <__udivsi3>
1164: 40a00533 neg a0,a0
1168: 00028067 jr t0
0000116c <__modsi3>:
116c: 00008293 mv t0,ra
1170: 0005ca63 bltz a1,1184 <__modsi3+0x18>
1174: 00054c63 bltz a0,118c <__modsi3+0x20>
1178: f79ff0ef jal ra,10f0 <__udivsi3>
117c: 00058513 mv a0,a1
1180: 00028067 jr t0
1184: 40b005b3 neg a1,a1
1188: fe0558e3 bgez a0,1178 <__modsi3+0xc>
118c: 40a00533 neg a0,a0
1190: f61ff0ef jal ra,10f0 <__udivsi3>
1194: 40b00533 neg a0,a1
1198: 00028067 jr t0
Disassembly of section .srodata:
0000119c <Mod>:
119c: 00fd addi ra,ra,31
...
Disassembly of section .sbss:
000011a0 <judgeResult>:
11a0: 0000 unimp
...
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 fmsub.d ft6,ft6,ft4,ft7,rmm
4: 2820 fld fs0,80(s0)
6: 29554e47 fmsub.s ft8,fa0,fs5,ft5,rmm
a: 3820 fld fs0,112(s0)
c: 332e fld ft6,232(sp)
e: 302e fld ft0,232(sp)
...
Disassembly of section .debug_line:
00000000 <.debug_line>:
0: 0164 addi s1,sp,140
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0045 c.nop 17
8: 0000 unimp
a: 0101 addi sp,sp,0
c: 000d0efb 0xd0efb
10: 0101 addi sp,sp,0
12: 0101 addi sp,sp,0
14: 0000 unimp
16: 0100 addi s0,sp,128
18: 0000 unimp
1a: 2e01 jal 32a <printInt-0xcd6>
1c: 2f2e fld ft10,200(sp)
1e: 2e2e fld ft8,200(sp)
20: 2f2e2e2f 0x2f2e2e2f
24: 2f2e fld ft10,200(sp)
26: 6972 flw fs2,28(sp)
28: 2d766373 csrrsi t1,0x2d7,12
2c: 2f636367 0x2f636367
30: 696c flw fa1,84(a0)
32: 6762 flw fa4,24(sp)
34: 632f6363 bltu t5,s2,65a <printInt-0x9a6>
38: 69666e6f jal t3,666ce <__heap_start+0x646ce>
3c: 69722f67 0x69722f67
40: 00766373 csrrsi t1,0x7,12
44: 6400 flw fs0,8(s0)
46: 7669 lui a2,0xffffa
48: 532e lw t1,232(sp)
4a: 0100 addi s0,sp,128
4c: 0000 unimp
4e: 0000 unimp
50: 0205 addi tp,tp,1
52: 10e8 addi a0,sp,108
54: 0000 unimp
56: 0100c403 lbu s0,16(ra)
5a: 04090103 lb sp,64(s2)
5e: 0100 addi s0,sp,128
60: 04090403 lb s0,64(s2)
64: 0100 addi s0,sp,128
66: 04090103 lb sp,64(s2)
6a: 0100 addi s0,sp,128
6c: 04090103 lb sp,64(s2)
70: 0100 addi s0,sp,128
72: 04090103 lb sp,64(s2)
76: 0100 addi s0,sp,128
78: 04090103 lb sp,64(s2)
7c: 0100 addi s0,sp,128
7e: 04090103 lb sp,64(s2)
82: 0100 addi s0,sp,128
84: 04090203 lb tp,64(s2)
88: 0100 addi s0,sp,128
8a: 04090103 lb sp,64(s2)
8e: 0100 addi s0,sp,128
90: 04090103 lb sp,64(s2)
94: 0100 addi s0,sp,128
96: 04090103 lb sp,64(s2)
9a: 0100 addi s0,sp,128
9c: 04090203 lb tp,64(s2)
a0: 0100 addi s0,sp,128
a2: 04090203 lb tp,64(s2)
a6: 0100 addi s0,sp,128
a8: 04090103 lb sp,64(s2)
ac: 0100 addi s0,sp,128
ae: 04090103 lb sp,64(s2)
b2: 0100 addi s0,sp,128
b4: 04090203 lb tp,64(s2)
b8: 0100 addi s0,sp,128
ba: 04090103 lb sp,64(s2)
be: 0100 addi s0,sp,128
c0: 04090103 lb sp,64(s2)
c4: 0100 addi s0,sp,128
c6: 04090203 lb tp,64(s2)
ca: 0100 addi s0,sp,128
cc: 04090503 lb a0,64(s2)
d0: 0100 addi s0,sp,128
d2: 04090103 lb sp,64(s2)
d6: 0100 addi s0,sp,128
d8: 04090103 lb sp,64(s2)
dc: 0100 addi s0,sp,128
de: 04090103 lb sp,64(s2)
e2: 0100 addi s0,sp,128
e4: 04090503 lb a0,64(s2)
e8: 0100 addi s0,sp,128
ea: 04090103 lb sp,64(s2)
ee: 0100 addi s0,sp,128
f0: 04090103 lb sp,64(s2)
f4: 0100 addi s0,sp,128
f6: 04090103 lb sp,64(s2)
fa: 0100 addi s0,sp,128
fc: 04090203 lb tp,64(s2)
100: 0100 addi s0,sp,128
102: 04090203 lb tp,64(s2)
106: 0100 addi s0,sp,128
108: 04090103 lb sp,64(s2)
10c: 0100 addi s0,sp,128
10e: 04090103 lb sp,64(s2)
112: 0100 addi s0,sp,128
114: 04090103 lb sp,64(s2)
118: 0100 addi s0,sp,128
11a: 04090403 lb s0,64(s2)
11e: 0100 addi s0,sp,128
120: 04090103 lb sp,64(s2)
124: 0100 addi s0,sp,128
126: 04090103 lb sp,64(s2)
12a: 0100 addi s0,sp,128
12c: 04090203 lb tp,64(s2)
130: 0100 addi s0,sp,128
132: 04090103 lb sp,64(s2)
136: 0100 addi s0,sp,128
138: 04090103 lb sp,64(s2)
13c: 0100 addi s0,sp,128
13e: 04090203 lb tp,64(s2)
142: 0100 addi s0,sp,128
144: 04090103 lb sp,64(s2)
148: 0100 addi s0,sp,128
14a: 04090203 lb tp,64(s2)
14e: 0100 addi s0,sp,128
150: 04090103 lb sp,64(s2)
154: 0100 addi s0,sp,128
156: 04090103 lb sp,64(s2)
15a: 0100 addi s0,sp,128
15c: 04090103 lb sp,64(s2)
160: 0100 addi s0,sp,128
162: 0409 addi s0,s0,2
164: 0000 unimp
166: 0101 addi sp,sp,0
Disassembly of section .debug_info:
00000000 <.debug_info>:
0: 0022 c.slli zero,0x8
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0104 addi s1,sp,128
c: 0000 unimp
e: 0000 unimp
10: 10e8 addi a0,sp,108
12: 0000 unimp
14: 119c addi a5,sp,224
16: 0000 unimp
18: 0000 unimp
1a: 0000 unimp
1c: 0000002f 0x2f
20: 0088 addi a0,sp,64
22: 0000 unimp
24: 8001 c.srli64 s0
Disassembly of section .debug_abbrev:
00000000 <.debug_abbrev>:
0: 1101 addi sp,sp,-32
2: 1000 addi s0,sp,32
4: 1106 slli sp,sp,0x21
6: 1201 addi tp,tp,-32
8: 0301 addi t1,t1,0
a: 1b0e slli s6,s6,0x23
c: 250e fld fa0,192(sp)
e: 130e slli t1,t1,0x23
10: 0005 c.nop 1
...
Disassembly of section .debug_aranges:
00000000 <.debug_aranges>:
0: 001c 0x1c
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0004 0x4
c: 0000 unimp
e: 0000 unimp
10: 10e8 addi a0,sp,108
12: 0000 unimp
14: 00b4 addi a3,sp,72
...
Disassembly of section .debug_str:
00000000 <.debug_str>:
0: 2e2e fld ft8,200(sp)
2: 2f2e2e2f 0x2f2e2e2f
6: 2e2e fld ft8,200(sp)
8: 722f2e2f 0x722f2e2f
c: 7369 lui t1,0xffffa
e: 672d7663 bgeu s10,s2,67a <printInt-0x986>
12: 6c2f6363 bltu t5,sp,6d8 <printInt-0x928>
16: 6269 lui tp,0x1a
18: 2f636367 0x2f636367
1c: 666e6f63 bltu t3,t1,69a <printInt-0x966>
20: 6769 lui a4,0x1a
22: 7369722f 0x7369722f
26: 642f7663 bgeu t5,sp,672 <printInt-0x98e>
2a: 7669 lui a2,0xffffa
2c: 532e lw t1,232(sp)
2e: 2f00 fld fs0,24(a4)
30: 6f68 flw fa0,92(a4)
32: 656d lui a0,0x1b
34: 2d75772f 0x2d75772f
38: 6971 lui s2,0x1c
3a: 676e flw fa4,216(sp)
3c: 312d jal fffffc66 <__heap_start+0xffffdc66>
3e: 3735 jal ffffff6a <__heap_start+0xffffdf6a>
40: 7369722f 0x7369722f
44: 672d7663 bgeu s10,s2,6b0 <printInt-0x950>
48: 756e flw fa0,248(sp)
4a: 742d lui s0,0xfffeb
4c: 636c6f6f jal t5,c6682 <__heap_start+0xc4682>
50: 6168 flw fa0,68(a0)
52: 6e69 lui t3,0x1a
54: 6975622f 0x6975622f
58: 646c flw fa1,76(s0)
5a: 672d lui a4,0xb
5c: 6e2d6363 bltu s10,sp,742 <printInt-0x8be>
60: 7765 lui a4,0xffff9
62: 696c flw fa1,84(a0)
64: 2d62 fld fs10,24(sp)
66: 67617473 csrrci s0,0x676,2
6a: 3265 jal fffffa12 <__heap_start+0xffffda12>
6c: 7369722f 0x7369722f
70: 32337663 bgeu t1,gp,39c <printInt-0xc64>
74: 752d lui a0,0xfffeb
76: 6b6e flw fs6,216(sp)
78: 6f6e flw ft10,216(sp)
7a: 652d6e77 0x652d6e77
7e: 666c flw fa1,76(a2)
80: 62696c2f 0x62696c2f
84: 00636367 0x636367
88: 20554e47 fmsub.s ft8,fa0,ft5,ft4,rmm
8c: 5341 li t1,-16
8e: 3220 fld fs0,96(a2)
90: 332e fld ft6,232(sp)
92: 2e31 jal 3ae <printInt-0xc52>
94: 0031 c.nop 12

30
test/testcases/hanoi.c Normal file
View File

@ -0,0 +1,30 @@
#include "io.inc"
int cd(int d, char *a, char *b, char *c, int sum) {
if (d == 1) {
printStr("move ");
printStr(a);
printStr(" --> ");
printStr(c);
sum++;
} else {
sum = cd(d - 1, a, c, b, sum);
printStr("move ");
printStr(a);
printStr(" --> ");
printStr(c);
sum = cd(d - 1, b, a, c, sum);
sum++;
}
return sum;
}
int main() {
char a[5] = "A";
char b[5] = "B";
char c[5] = "C";
int d = 10;
int sum = cd(d, a, b, c, 0);
printInt(sum);
return judgeResult % Mod; // 20
}

44
test/testcases/hanoi.data Normal file
View File

@ -0,0 +1,44 @@
@00000000
37 01 02 00 EF 10 00 12 13 05 F0 0F B7 06 03 00
23 82 A6 00 6F F0 9F FF
@00001000
37 17 00 00 83 27 07 25 33 45 F5 00 13 05 D5 0A
23 28 A7 24 67 80 00 00 83 47 05 00 63 82 07 02
37 17 00 00 83 26 07 25 B3 C7 D7 00 93 87 97 20
23 28 F7 24 13 05 15 00 83 47 05 00 E3 94 07 FE
67 80 00 00 13 01 01 FE 23 2E 11 00 23 2C 81 00
23 2A 91 00 23 28 21 01 23 26 31 01 23 24 41 01
13 89 05 00 93 89 06 00 93 04 07 00 93 07 10 00
63 02 F5 08 13 0A 06 00 13 04 F5 FF 93 06 06 00
13 86 09 00 13 05 04 00 EF F0 DF FB 93 04 05 00
37 15 00 00 13 05 C5 23 EF F0 1F F8 13 05 09 00
EF F0 9F F7 37 15 00 00 13 05 45 24 EF F0 DF F6
13 85 09 00 EF F0 5F F6 13 87 04 00 93 86 09 00
13 06 09 00 93 05 0A 00 13 05 04 00 EF F0 9F F7
13 05 15 00 83 20 C1 01 03 24 81 01 83 24 41 01
03 29 01 01 83 29 C1 00 03 2A 81 00 13 01 01 02
67 80 00 00 37 15 00 00 13 05 C5 23 EF F0 DF F1
13 05 09 00 EF F0 5F F1 37 15 00 00 13 05 45 24
EF F0 9F F0 13 85 09 00 EF F0 1F F0 13 85 14 00
6F F0 5F FB 13 01 01 FD 23 26 11 02 93 07 10 04
23 2C F1 00 23 0E 01 00 93 07 20 04 23 28 F1 00
23 0A 01 00 93 07 30 04 23 24 F1 00 23 06 01 00
13 07 00 00 93 06 81 00 13 06 01 01 93 05 81 01
13 05 A0 00 EF F0 1F EE EF F0 9F E9 93 05 D0 0F
B7 17 00 00 03 A5 07 25 EF 00 40 09 83 20 C1 02
13 01 01 03 67 80 00 00 63 40 05 06 63 C6 05 06
13 86 05 00 93 05 05 00 13 05 F0 FF 63 0C 06 02
93 06 10 00 63 7A B6 00 63 58 C0 00 13 16 16 00
93 96 16 00 E3 6A B6 FE 13 05 00 00 63 E6 C5 00
B3 85 C5 40 33 65 D5 00 93 D6 16 00 13 56 16 00
E3 96 06 FE 67 80 00 00 93 82 00 00 EF F0 5F FB
13 85 05 00 67 80 02 00 33 05 A0 40 63 D8 05 00
B3 05 B0 40 6F F0 DF F9 B3 05 B0 40 93 82 00 00
EF F0 1F F9 33 05 A0 40 67 80 02 00 93 82 00 00
63 CA 05 00 63 4C 05 00 EF F0 9F F7 13 85 05 00
67 80 02 00 B3 05 B0 40 E3 58 05 FE 33 05 A0 40
EF F0 1F F6 33 05 B0 40 67 80 02 00
@0000123C
6D 6F 76 65 20 00 00 00 20 2D 2D 3E 20 00 00 00
@0000124C
FD 00 00 00

450
test/testcases/hanoi.dump Normal file
View File

@ -0,0 +1,450 @@
./test/test.om: file format elf32-littleriscv
Disassembly of section .rom:
00000000 <.rom>:
0: 00020137 lui sp,0x20
4: 120010ef jal ra,1124 <main>
8: 0ff00513 li a0,255
c: 000306b7 lui a3,0x30
10: 00a68223 sb a0,4(a3) # 30004 <__heap_start+0x2e004>
14: ff9ff06f j c <printInt-0xff4>
Disassembly of section .text:
00001000 <printInt>:
1000: 00001737 lui a4,0x1
1004: 25072783 lw a5,592(a4) # 1250 <__bss_end>
1008: 00f54533 xor a0,a0,a5
100c: 0ad50513 addi a0,a0,173
1010: 24a72823 sw a0,592(a4)
1014: 00008067 ret
00001018 <printStr>:
1018: 00054783 lbu a5,0(a0)
101c: 02078263 beqz a5,1040 <printStr+0x28>
1020: 00001737 lui a4,0x1
1024: 25072683 lw a3,592(a4) # 1250 <__bss_end>
1028: 00d7c7b3 xor a5,a5,a3
102c: 20978793 addi a5,a5,521
1030: 24f72823 sw a5,592(a4)
1034: 00150513 addi a0,a0,1
1038: 00054783 lbu a5,0(a0)
103c: fe0794e3 bnez a5,1024 <printStr+0xc>
1040: 00008067 ret
00001044 <cd>:
1044: fe010113 addi sp,sp,-32 # 1ffe0 <__heap_start+0x1dfe0>
1048: 00112e23 sw ra,28(sp)
104c: 00812c23 sw s0,24(sp)
1050: 00912a23 sw s1,20(sp)
1054: 01212823 sw s2,16(sp)
1058: 01312623 sw s3,12(sp)
105c: 01412423 sw s4,8(sp)
1060: 00058913 mv s2,a1
1064: 00068993 mv s3,a3
1068: 00070493 mv s1,a4
106c: 00100793 li a5,1
1070: 08f50263 beq a0,a5,10f4 <cd+0xb0>
1074: 00060a13 mv s4,a2
1078: fff50413 addi s0,a0,-1
107c: 00060693 mv a3,a2
1080: 00098613 mv a2,s3
1084: 00040513 mv a0,s0
1088: fbdff0ef jal ra,1044 <cd>
108c: 00050493 mv s1,a0
1090: 00001537 lui a0,0x1
1094: 23c50513 addi a0,a0,572 # 123c <__modsi3+0x30>
1098: f81ff0ef jal ra,1018 <printStr>
109c: 00090513 mv a0,s2
10a0: f79ff0ef jal ra,1018 <printStr>
10a4: 00001537 lui a0,0x1
10a8: 24450513 addi a0,a0,580 # 1244 <__modsi3+0x38>
10ac: f6dff0ef jal ra,1018 <printStr>
10b0: 00098513 mv a0,s3
10b4: f65ff0ef jal ra,1018 <printStr>
10b8: 00048713 mv a4,s1
10bc: 00098693 mv a3,s3
10c0: 00090613 mv a2,s2
10c4: 000a0593 mv a1,s4
10c8: 00040513 mv a0,s0
10cc: f79ff0ef jal ra,1044 <cd>
10d0: 00150513 addi a0,a0,1
10d4: 01c12083 lw ra,28(sp)
10d8: 01812403 lw s0,24(sp)
10dc: 01412483 lw s1,20(sp)
10e0: 01012903 lw s2,16(sp)
10e4: 00c12983 lw s3,12(sp)
10e8: 00812a03 lw s4,8(sp)
10ec: 02010113 addi sp,sp,32
10f0: 00008067 ret
10f4: 00001537 lui a0,0x1
10f8: 23c50513 addi a0,a0,572 # 123c <__modsi3+0x30>
10fc: f1dff0ef jal ra,1018 <printStr>
1100: 00090513 mv a0,s2
1104: f15ff0ef jal ra,1018 <printStr>
1108: 00001537 lui a0,0x1
110c: 24450513 addi a0,a0,580 # 1244 <__modsi3+0x38>
1110: f09ff0ef jal ra,1018 <printStr>
1114: 00098513 mv a0,s3
1118: f01ff0ef jal ra,1018 <printStr>
111c: 00148513 addi a0,s1,1
1120: fb5ff06f j 10d4 <cd+0x90>
00001124 <main>:
1124: fd010113 addi sp,sp,-48
1128: 02112623 sw ra,44(sp)
112c: 04100793 li a5,65
1130: 00f12c23 sw a5,24(sp)
1134: 00010e23 sb zero,28(sp)
1138: 04200793 li a5,66
113c: 00f12823 sw a5,16(sp)
1140: 00010a23 sb zero,20(sp)
1144: 04300793 li a5,67
1148: 00f12423 sw a5,8(sp)
114c: 00010623 sb zero,12(sp)
1150: 00000713 li a4,0
1154: 00810693 addi a3,sp,8
1158: 01010613 addi a2,sp,16
115c: 01810593 addi a1,sp,24
1160: 00a00513 li a0,10
1164: ee1ff0ef jal ra,1044 <cd>
1168: e99ff0ef jal ra,1000 <printInt>
116c: 0fd00593 li a1,253
1170: 000017b7 lui a5,0x1
1174: 2507a503 lw a0,592(a5) # 1250 <__bss_end>
1178: 094000ef jal ra,120c <__modsi3>
117c: 02c12083 lw ra,44(sp)
1180: 03010113 addi sp,sp,48
1184: 00008067 ret
00001188 <__divsi3>:
1188: 06054063 bltz a0,11e8 <__umodsi3+0x10>
118c: 0605c663 bltz a1,11f8 <__umodsi3+0x20>
00001190 <__udivsi3>:
1190: 00058613 mv a2,a1
1194: 00050593 mv a1,a0
1198: fff00513 li a0,-1
119c: 02060c63 beqz a2,11d4 <__udivsi3+0x44>
11a0: 00100693 li a3,1
11a4: 00b67a63 bgeu a2,a1,11b8 <__udivsi3+0x28>
11a8: 00c05863 blez a2,11b8 <__udivsi3+0x28>
11ac: 00161613 slli a2,a2,0x1
11b0: 00169693 slli a3,a3,0x1
11b4: feb66ae3 bltu a2,a1,11a8 <__udivsi3+0x18>
11b8: 00000513 li a0,0
11bc: 00c5e663 bltu a1,a2,11c8 <__udivsi3+0x38>
11c0: 40c585b3 sub a1,a1,a2
11c4: 00d56533 or a0,a0,a3
11c8: 0016d693 srli a3,a3,0x1
11cc: 00165613 srli a2,a2,0x1
11d0: fe0696e3 bnez a3,11bc <__udivsi3+0x2c>
11d4: 00008067 ret
000011d8 <__umodsi3>:
11d8: 00008293 mv t0,ra
11dc: fb5ff0ef jal ra,1190 <__udivsi3>
11e0: 00058513 mv a0,a1
11e4: 00028067 jr t0
11e8: 40a00533 neg a0,a0
11ec: 0005d863 bgez a1,11fc <__umodsi3+0x24>
11f0: 40b005b3 neg a1,a1
11f4: f9dff06f j 1190 <__udivsi3>
11f8: 40b005b3 neg a1,a1
11fc: 00008293 mv t0,ra
1200: f91ff0ef jal ra,1190 <__udivsi3>
1204: 40a00533 neg a0,a0
1208: 00028067 jr t0
0000120c <__modsi3>:
120c: 00008293 mv t0,ra
1210: 0005ca63 bltz a1,1224 <__modsi3+0x18>
1214: 00054c63 bltz a0,122c <__modsi3+0x20>
1218: f79ff0ef jal ra,1190 <__udivsi3>
121c: 00058513 mv a0,a1
1220: 00028067 jr t0
1224: 40b005b3 neg a1,a1
1228: fe0558e3 bgez a0,1218 <__modsi3+0xc>
122c: 40a00533 neg a0,a0
1230: f61ff0ef jal ra,1190 <__udivsi3>
1234: 40b00533 neg a0,a1
1238: 00028067 jr t0
Disassembly of section .rodata.str1.4:
0000123c <.rodata.str1.4>:
123c: 6f6d lui t5,0x1b
123e: 6576 flw fa0,92(sp)
1240: 0020 addi s0,sp,8
1242: 0000 unimp
1244: 2d20 fld fs0,88(a0)
1246: 3e2d jal d80 <printInt-0x280>
1248: 0020 addi s0,sp,8
...
Disassembly of section .srodata:
0000124c <Mod>:
124c: 00fd addi ra,ra,31
...
Disassembly of section .sbss:
00001250 <judgeResult>:
1250: 0000 unimp
...
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 fmsub.d ft6,ft6,ft4,ft7,rmm
4: 2820 fld fs0,80(s0)
6: 29554e47 fmsub.s ft8,fa0,fs5,ft5,rmm
a: 3820 fld fs0,112(s0)
c: 332e fld ft6,232(sp)
e: 302e fld ft0,232(sp)
...
Disassembly of section .debug_line:
00000000 <.debug_line>:
0: 0164 addi s1,sp,140
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0045 c.nop 17
8: 0000 unimp
a: 0101 addi sp,sp,0
c: 000d0efb 0xd0efb
10: 0101 addi sp,sp,0
12: 0101 addi sp,sp,0
14: 0000 unimp
16: 0100 addi s0,sp,128
18: 0000 unimp
1a: 2e01 jal 32a <printInt-0xcd6>
1c: 2f2e fld ft10,200(sp)
1e: 2e2e fld ft8,200(sp)
20: 2f2e2e2f 0x2f2e2e2f
24: 2f2e fld ft10,200(sp)
26: 6972 flw fs2,28(sp)
28: 2d766373 csrrsi t1,0x2d7,12
2c: 2f636367 0x2f636367
30: 696c flw fa1,84(a0)
32: 6762 flw fa4,24(sp)
34: 632f6363 bltu t5,s2,65a <printInt-0x9a6>
38: 69666e6f jal t3,666ce <__heap_start+0x646ce>
3c: 69722f67 0x69722f67
40: 00766373 csrrsi t1,0x7,12
44: 6400 flw fs0,8(s0)
46: 7669 lui a2,0xffffa
48: 532e lw t1,232(sp)
4a: 0100 addi s0,sp,128
4c: 0000 unimp
4e: 0000 unimp
50: 0205 addi tp,tp,1
52: 1188 addi a0,sp,224
54: 0000 unimp
56: 0100c403 lbu s0,16(ra)
5a: 04090103 lb sp,64(s2)
5e: 0100 addi s0,sp,128
60: 04090403 lb s0,64(s2)
64: 0100 addi s0,sp,128
66: 04090103 lb sp,64(s2)
6a: 0100 addi s0,sp,128
6c: 04090103 lb sp,64(s2)
70: 0100 addi s0,sp,128
72: 04090103 lb sp,64(s2)
76: 0100 addi s0,sp,128
78: 04090103 lb sp,64(s2)
7c: 0100 addi s0,sp,128
7e: 04090103 lb sp,64(s2)
82: 0100 addi s0,sp,128
84: 04090203 lb tp,64(s2)
88: 0100 addi s0,sp,128
8a: 04090103 lb sp,64(s2)
8e: 0100 addi s0,sp,128
90: 04090103 lb sp,64(s2)
94: 0100 addi s0,sp,128
96: 04090103 lb sp,64(s2)
9a: 0100 addi s0,sp,128
9c: 04090203 lb tp,64(s2)
a0: 0100 addi s0,sp,128
a2: 04090203 lb tp,64(s2)
a6: 0100 addi s0,sp,128
a8: 04090103 lb sp,64(s2)
ac: 0100 addi s0,sp,128
ae: 04090103 lb sp,64(s2)
b2: 0100 addi s0,sp,128
b4: 04090203 lb tp,64(s2)
b8: 0100 addi s0,sp,128
ba: 04090103 lb sp,64(s2)
be: 0100 addi s0,sp,128
c0: 04090103 lb sp,64(s2)
c4: 0100 addi s0,sp,128
c6: 04090203 lb tp,64(s2)
ca: 0100 addi s0,sp,128
cc: 04090503 lb a0,64(s2)
d0: 0100 addi s0,sp,128
d2: 04090103 lb sp,64(s2)
d6: 0100 addi s0,sp,128
d8: 04090103 lb sp,64(s2)
dc: 0100 addi s0,sp,128
de: 04090103 lb sp,64(s2)
e2: 0100 addi s0,sp,128
e4: 04090503 lb a0,64(s2)
e8: 0100 addi s0,sp,128
ea: 04090103 lb sp,64(s2)
ee: 0100 addi s0,sp,128
f0: 04090103 lb sp,64(s2)
f4: 0100 addi s0,sp,128
f6: 04090103 lb sp,64(s2)
fa: 0100 addi s0,sp,128
fc: 04090203 lb tp,64(s2)
100: 0100 addi s0,sp,128
102: 04090203 lb tp,64(s2)
106: 0100 addi s0,sp,128
108: 04090103 lb sp,64(s2)
10c: 0100 addi s0,sp,128
10e: 04090103 lb sp,64(s2)
112: 0100 addi s0,sp,128
114: 04090103 lb sp,64(s2)
118: 0100 addi s0,sp,128
11a: 04090403 lb s0,64(s2)
11e: 0100 addi s0,sp,128
120: 04090103 lb sp,64(s2)
124: 0100 addi s0,sp,128
126: 04090103 lb sp,64(s2)
12a: 0100 addi s0,sp,128
12c: 04090203 lb tp,64(s2)
130: 0100 addi s0,sp,128
132: 04090103 lb sp,64(s2)
136: 0100 addi s0,sp,128
138: 04090103 lb sp,64(s2)
13c: 0100 addi s0,sp,128
13e: 04090203 lb tp,64(s2)
142: 0100 addi s0,sp,128
144: 04090103 lb sp,64(s2)
148: 0100 addi s0,sp,128
14a: 04090203 lb tp,64(s2)
14e: 0100 addi s0,sp,128
150: 04090103 lb sp,64(s2)
154: 0100 addi s0,sp,128
156: 04090103 lb sp,64(s2)
15a: 0100 addi s0,sp,128
15c: 04090103 lb sp,64(s2)
160: 0100 addi s0,sp,128
162: 0409 addi s0,s0,2
164: 0000 unimp
166: 0101 addi sp,sp,0
Disassembly of section .debug_info:
00000000 <.debug_info>:
0: 0022 c.slli zero,0x8
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0104 addi s1,sp,128
c: 0000 unimp
e: 0000 unimp
10: 1188 addi a0,sp,224
12: 0000 unimp
14: 123c addi a5,sp,296
16: 0000 unimp
18: 0000 unimp
1a: 0000 unimp
1c: 0000002f 0x2f
20: 0088 addi a0,sp,64
22: 0000 unimp
24: 8001 c.srli64 s0
Disassembly of section .debug_abbrev:
00000000 <.debug_abbrev>:
0: 1101 addi sp,sp,-32
2: 1000 addi s0,sp,32
4: 1106 slli sp,sp,0x21
6: 1201 addi tp,tp,-32
8: 0301 addi t1,t1,0
a: 1b0e slli s6,s6,0x23
c: 250e fld fa0,192(sp)
e: 130e slli t1,t1,0x23
10: 0005 c.nop 1
...
Disassembly of section .debug_aranges:
00000000 <.debug_aranges>:
0: 001c 0x1c
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0004 0x4
c: 0000 unimp
e: 0000 unimp
10: 1188 addi a0,sp,224
12: 0000 unimp
14: 00b4 addi a3,sp,72
...
Disassembly of section .debug_str:
00000000 <.debug_str>:
0: 2e2e fld ft8,200(sp)
2: 2f2e2e2f 0x2f2e2e2f
6: 2e2e fld ft8,200(sp)
8: 722f2e2f 0x722f2e2f
c: 7369 lui t1,0xffffa
e: 672d7663 bgeu s10,s2,67a <printInt-0x986>
12: 6c2f6363 bltu t5,sp,6d8 <printInt-0x928>
16: 6269 lui tp,0x1a
18: 2f636367 0x2f636367
1c: 666e6f63 bltu t3,t1,69a <printInt-0x966>
20: 6769 lui a4,0x1a
22: 7369722f 0x7369722f
26: 642f7663 bgeu t5,sp,672 <printInt-0x98e>
2a: 7669 lui a2,0xffffa
2c: 532e lw t1,232(sp)
2e: 2f00 fld fs0,24(a4)
30: 6f68 flw fa0,92(a4)
32: 656d lui a0,0x1b
34: 2d75772f 0x2d75772f
38: 6971 lui s2,0x1c
3a: 676e flw fa4,216(sp)
3c: 312d jal fffffc66 <__heap_start+0xffffdc66>
3e: 3735 jal ffffff6a <__heap_start+0xffffdf6a>
40: 7369722f 0x7369722f
44: 672d7663 bgeu s10,s2,6b0 <printInt-0x950>
48: 756e flw fa0,248(sp)
4a: 742d lui s0,0xfffeb
4c: 636c6f6f jal t5,c6682 <__heap_start+0xc4682>
50: 6168 flw fa0,68(a0)
52: 6e69 lui t3,0x1a
54: 6975622f 0x6975622f
58: 646c flw fa1,76(s0)
5a: 672d lui a4,0xb
5c: 6e2d6363 bltu s10,sp,742 <printInt-0x8be>
60: 7765 lui a4,0xffff9
62: 696c flw fa1,84(a0)
64: 2d62 fld fs10,24(sp)
66: 67617473 csrrci s0,0x676,2
6a: 3265 jal fffffa12 <__heap_start+0xffffda12>
6c: 7369722f 0x7369722f
70: 32337663 bgeu t1,gp,39c <printInt-0xc64>
74: 752d lui a0,0xfffeb
76: 6b6e flw fs6,216(sp)
78: 6f6e flw ft10,216(sp)
7a: 652d6e77 0x652d6e77
7e: 666c flw fa1,76(a2)
80: 62696c2f 0x62696c2f
84: 00636367 0x636367
88: 20554e47 fmsub.s ft8,fa0,ft5,ft4,rmm
8c: 5341 li t1,-16
8e: 3220 fld fs0,96(a2)
90: 332e fld ft6,232(sp)
92: 2e31 jal 3ae <printInt-0xc52>
94: 0031 c.nop 12

14
test/testcases/io.inc Normal file
View File

@ -0,0 +1,14 @@
int judgeResult = 0;
const int Mod = 253;
void printInt(int x) {
judgeResult ^= x;
judgeResult += 173;
}
void printStr(const char *str) {
for (const char *cur = str; *cur != 0; ++cur) {
judgeResult ^= *cur;
judgeResult += 521;
}
}

10
test/testcases/lvalue2.c Normal file
View File

@ -0,0 +1,10 @@
#include "io.inc"
int a[4];
int main() {
int b[4];
b[2] = 2;
int *p;
p = b;
printInt(p[2]);
return judgeResult % Mod; // 175
}

View File

@ -0,0 +1,25 @@
@00000000
37 01 02 00 EF 10 00 04 13 05 F0 0F B7 06 03 00
23 82 A6 00 6F F0 9F FF
@00001000
37 17 00 00 83 27 87 13 33 45 F5 00 13 05 D5 0A
23 2C A7 12 67 80 00 00 83 47 05 00 63 82 07 02
37 17 00 00 83 26 87 13 B3 C7 D7 00 93 87 97 20
23 2C F7 12 13 05 15 00 83 47 05 00 E3 94 07 FE
67 80 00 00 13 01 01 FF 23 26 11 00 13 05 20 00
EF F0 1F FB 93 05 D0 0F B7 17 00 00 03 A5 87 13
EF 00 40 09 83 20 C1 00 13 01 01 01 67 80 00 00
63 40 05 06 63 C6 05 06 13 86 05 00 93 05 05 00
13 05 F0 FF 63 0C 06 02 93 06 10 00 63 7A B6 00
63 58 C0 00 13 16 16 00 93 96 16 00 E3 6A B6 FE
13 05 00 00 63 E6 C5 00 B3 85 C5 40 33 65 D5 00
93 D6 16 00 13 56 16 00 E3 96 06 FE 67 80 00 00
93 82 00 00 EF F0 5F FB 13 85 05 00 67 80 02 00
33 05 A0 40 63 D8 05 00 B3 05 B0 40 6F F0 DF F9
B3 05 B0 40 93 82 00 00 EF F0 1F F9 33 05 A0 40
67 80 02 00 93 82 00 00 63 CA 05 00 63 4C 05 00
EF F0 9F F7 13 85 05 00 67 80 02 00 B3 05 B0 40
E3 58 05 FE 33 05 A0 40 EF F0 1F F6 33 05 B0 40
67 80 02 00
@00001124
FD 00 00 00

371
test/testcases/lvalue2.dump Normal file
View File

@ -0,0 +1,371 @@
./test/test.om: file format elf32-littleriscv
Disassembly of section .rom:
00000000 <.rom>:
0: 00020137 lui sp,0x20
4: 040010ef jal ra,1044 <main>
8: 0ff00513 li a0,255
c: 000306b7 lui a3,0x30
10: 00a68223 sb a0,4(a3) # 30004 <__heap_start+0x2e004>
14: ff9ff06f j c <printInt-0xff4>
Disassembly of section .text:
00001000 <printInt>:
1000: 00001737 lui a4,0x1
1004: 13872783 lw a5,312(a4) # 1138 <__bss_end>
1008: 00f54533 xor a0,a0,a5
100c: 0ad50513 addi a0,a0,173
1010: 12a72c23 sw a0,312(a4)
1014: 00008067 ret
00001018 <printStr>:
1018: 00054783 lbu a5,0(a0)
101c: 02078263 beqz a5,1040 <printStr+0x28>
1020: 00001737 lui a4,0x1
1024: 13872683 lw a3,312(a4) # 1138 <__bss_end>
1028: 00d7c7b3 xor a5,a5,a3
102c: 20978793 addi a5,a5,521
1030: 12f72c23 sw a5,312(a4)
1034: 00150513 addi a0,a0,1
1038: 00054783 lbu a5,0(a0)
103c: fe0794e3 bnez a5,1024 <printStr+0xc>
1040: 00008067 ret
00001044 <main>:
1044: ff010113 addi sp,sp,-16 # 1fff0 <__heap_start+0x1dff0>
1048: 00112623 sw ra,12(sp)
104c: 00200513 li a0,2
1050: fb1ff0ef jal ra,1000 <printInt>
1054: 0fd00593 li a1,253
1058: 000017b7 lui a5,0x1
105c: 1387a503 lw a0,312(a5) # 1138 <__bss_end>
1060: 094000ef jal ra,10f4 <__modsi3>
1064: 00c12083 lw ra,12(sp)
1068: 01010113 addi sp,sp,16
106c: 00008067 ret
00001070 <__divsi3>:
1070: 06054063 bltz a0,10d0 <__umodsi3+0x10>
1074: 0605c663 bltz a1,10e0 <__umodsi3+0x20>
00001078 <__udivsi3>:
1078: 00058613 mv a2,a1
107c: 00050593 mv a1,a0
1080: fff00513 li a0,-1
1084: 02060c63 beqz a2,10bc <__udivsi3+0x44>
1088: 00100693 li a3,1
108c: 00b67a63 bgeu a2,a1,10a0 <__udivsi3+0x28>
1090: 00c05863 blez a2,10a0 <__udivsi3+0x28>
1094: 00161613 slli a2,a2,0x1
1098: 00169693 slli a3,a3,0x1
109c: feb66ae3 bltu a2,a1,1090 <__udivsi3+0x18>
10a0: 00000513 li a0,0
10a4: 00c5e663 bltu a1,a2,10b0 <__udivsi3+0x38>
10a8: 40c585b3 sub a1,a1,a2
10ac: 00d56533 or a0,a0,a3
10b0: 0016d693 srli a3,a3,0x1
10b4: 00165613 srli a2,a2,0x1
10b8: fe0696e3 bnez a3,10a4 <__udivsi3+0x2c>
10bc: 00008067 ret
000010c0 <__umodsi3>:
10c0: 00008293 mv t0,ra
10c4: fb5ff0ef jal ra,1078 <__udivsi3>
10c8: 00058513 mv a0,a1
10cc: 00028067 jr t0
10d0: 40a00533 neg a0,a0
10d4: 0005d863 bgez a1,10e4 <__umodsi3+0x24>
10d8: 40b005b3 neg a1,a1
10dc: f9dff06f j 1078 <__udivsi3>
10e0: 40b005b3 neg a1,a1
10e4: 00008293 mv t0,ra
10e8: f91ff0ef jal ra,1078 <__udivsi3>
10ec: 40a00533 neg a0,a0
10f0: 00028067 jr t0
000010f4 <__modsi3>:
10f4: 00008293 mv t0,ra
10f8: 0005ca63 bltz a1,110c <__modsi3+0x18>
10fc: 00054c63 bltz a0,1114 <__modsi3+0x20>
1100: f79ff0ef jal ra,1078 <__udivsi3>
1104: 00058513 mv a0,a1
1108: 00028067 jr t0
110c: 40b005b3 neg a1,a1
1110: fe0558e3 bgez a0,1100 <__modsi3+0xc>
1114: 40a00533 neg a0,a0
1118: f61ff0ef jal ra,1078 <__udivsi3>
111c: 40b00533 neg a0,a1
1120: 00028067 jr t0
Disassembly of section .srodata:
00001124 <Mod>:
1124: 00fd addi ra,ra,31
...
Disassembly of section .bss:
00001128 <a>:
...
Disassembly of section .sbss:
00001138 <judgeResult>:
1138: 0000 unimp
...
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 fmsub.d ft6,ft6,ft4,ft7,rmm
4: 2820 fld fs0,80(s0)
6: 29554e47 fmsub.s ft8,fa0,fs5,ft5,rmm
a: 3820 fld fs0,112(s0)
c: 332e fld ft6,232(sp)
e: 302e fld ft0,232(sp)
...
Disassembly of section .debug_line:
00000000 <.debug_line>:
0: 0164 addi s1,sp,140
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0045 c.nop 17
8: 0000 unimp
a: 0101 addi sp,sp,0
c: 000d0efb 0xd0efb
10: 0101 addi sp,sp,0
12: 0101 addi sp,sp,0
14: 0000 unimp
16: 0100 addi s0,sp,128
18: 0000 unimp
1a: 2e01 jal 32a <printInt-0xcd6>
1c: 2f2e fld ft10,200(sp)
1e: 2e2e fld ft8,200(sp)
20: 2f2e2e2f 0x2f2e2e2f
24: 2f2e fld ft10,200(sp)
26: 6972 flw fs2,28(sp)
28: 2d766373 csrrsi t1,0x2d7,12
2c: 2f636367 0x2f636367
30: 696c flw fa1,84(a0)
32: 6762 flw fa4,24(sp)
34: 632f6363 bltu t5,s2,65a <printInt-0x9a6>
38: 69666e6f jal t3,666ce <__heap_start+0x646ce>
3c: 69722f67 0x69722f67
40: 00766373 csrrsi t1,0x7,12
44: 6400 flw fs0,8(s0)
46: 7669 lui a2,0xffffa
48: 532e lw t1,232(sp)
4a: 0100 addi s0,sp,128
4c: 0000 unimp
4e: 0000 unimp
50: 0205 addi tp,tp,1
52: 1070 addi a2,sp,44
54: 0000 unimp
56: 0100c403 lbu s0,16(ra)
5a: 04090103 lb sp,64(s2)
5e: 0100 addi s0,sp,128
60: 04090403 lb s0,64(s2)
64: 0100 addi s0,sp,128
66: 04090103 lb sp,64(s2)
6a: 0100 addi s0,sp,128
6c: 04090103 lb sp,64(s2)
70: 0100 addi s0,sp,128
72: 04090103 lb sp,64(s2)
76: 0100 addi s0,sp,128
78: 04090103 lb sp,64(s2)
7c: 0100 addi s0,sp,128
7e: 04090103 lb sp,64(s2)
82: 0100 addi s0,sp,128
84: 04090203 lb tp,64(s2)
88: 0100 addi s0,sp,128
8a: 04090103 lb sp,64(s2)
8e: 0100 addi s0,sp,128
90: 04090103 lb sp,64(s2)
94: 0100 addi s0,sp,128
96: 04090103 lb sp,64(s2)
9a: 0100 addi s0,sp,128
9c: 04090203 lb tp,64(s2)
a0: 0100 addi s0,sp,128
a2: 04090203 lb tp,64(s2)
a6: 0100 addi s0,sp,128
a8: 04090103 lb sp,64(s2)
ac: 0100 addi s0,sp,128
ae: 04090103 lb sp,64(s2)
b2: 0100 addi s0,sp,128
b4: 04090203 lb tp,64(s2)
b8: 0100 addi s0,sp,128
ba: 04090103 lb sp,64(s2)
be: 0100 addi s0,sp,128
c0: 04090103 lb sp,64(s2)
c4: 0100 addi s0,sp,128
c6: 04090203 lb tp,64(s2)
ca: 0100 addi s0,sp,128
cc: 04090503 lb a0,64(s2)
d0: 0100 addi s0,sp,128
d2: 04090103 lb sp,64(s2)
d6: 0100 addi s0,sp,128
d8: 04090103 lb sp,64(s2)
dc: 0100 addi s0,sp,128
de: 04090103 lb sp,64(s2)
e2: 0100 addi s0,sp,128
e4: 04090503 lb a0,64(s2)
e8: 0100 addi s0,sp,128
ea: 04090103 lb sp,64(s2)
ee: 0100 addi s0,sp,128
f0: 04090103 lb sp,64(s2)
f4: 0100 addi s0,sp,128
f6: 04090103 lb sp,64(s2)
fa: 0100 addi s0,sp,128
fc: 04090203 lb tp,64(s2)
100: 0100 addi s0,sp,128
102: 04090203 lb tp,64(s2)
106: 0100 addi s0,sp,128
108: 04090103 lb sp,64(s2)
10c: 0100 addi s0,sp,128
10e: 04090103 lb sp,64(s2)
112: 0100 addi s0,sp,128
114: 04090103 lb sp,64(s2)
118: 0100 addi s0,sp,128
11a: 04090403 lb s0,64(s2)
11e: 0100 addi s0,sp,128
120: 04090103 lb sp,64(s2)
124: 0100 addi s0,sp,128
126: 04090103 lb sp,64(s2)
12a: 0100 addi s0,sp,128
12c: 04090203 lb tp,64(s2)
130: 0100 addi s0,sp,128
132: 04090103 lb sp,64(s2)
136: 0100 addi s0,sp,128
138: 04090103 lb sp,64(s2)
13c: 0100 addi s0,sp,128
13e: 04090203 lb tp,64(s2)
142: 0100 addi s0,sp,128
144: 04090103 lb sp,64(s2)
148: 0100 addi s0,sp,128
14a: 04090203 lb tp,64(s2)
14e: 0100 addi s0,sp,128
150: 04090103 lb sp,64(s2)
154: 0100 addi s0,sp,128
156: 04090103 lb sp,64(s2)
15a: 0100 addi s0,sp,128
15c: 04090103 lb sp,64(s2)
160: 0100 addi s0,sp,128
162: 0409 addi s0,s0,2
164: 0000 unimp
166: 0101 addi sp,sp,0
Disassembly of section .debug_info:
00000000 <.debug_info>:
0: 0022 c.slli zero,0x8
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0104 addi s1,sp,128
c: 0000 unimp
e: 0000 unimp
10: 1070 addi a2,sp,44
12: 0000 unimp
14: 1124 addi s1,sp,168
16: 0000 unimp
18: 0000 unimp
1a: 0000 unimp
1c: 0000002f 0x2f
20: 0088 addi a0,sp,64
22: 0000 unimp
24: 8001 c.srli64 s0
Disassembly of section .debug_abbrev:
00000000 <.debug_abbrev>:
0: 1101 addi sp,sp,-32
2: 1000 addi s0,sp,32
4: 1106 slli sp,sp,0x21
6: 1201 addi tp,tp,-32
8: 0301 addi t1,t1,0
a: 1b0e slli s6,s6,0x23
c: 250e fld fa0,192(sp)
e: 130e slli t1,t1,0x23
10: 0005 c.nop 1
...
Disassembly of section .debug_aranges:
00000000 <.debug_aranges>:
0: 001c 0x1c
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0004 0x4
c: 0000 unimp
e: 0000 unimp
10: 1070 addi a2,sp,44
12: 0000 unimp
14: 00b4 addi a3,sp,72
...
Disassembly of section .debug_str:
00000000 <.debug_str>:
0: 2e2e fld ft8,200(sp)
2: 2f2e2e2f 0x2f2e2e2f
6: 2e2e fld ft8,200(sp)
8: 722f2e2f 0x722f2e2f
c: 7369 lui t1,0xffffa
e: 672d7663 bgeu s10,s2,67a <printInt-0x986>
12: 6c2f6363 bltu t5,sp,6d8 <printInt-0x928>
16: 6269 lui tp,0x1a
18: 2f636367 0x2f636367
1c: 666e6f63 bltu t3,t1,69a <printInt-0x966>
20: 6769 lui a4,0x1a
22: 7369722f 0x7369722f
26: 642f7663 bgeu t5,sp,672 <printInt-0x98e>
2a: 7669 lui a2,0xffffa
2c: 532e lw t1,232(sp)
2e: 2f00 fld fs0,24(a4)
30: 6f68 flw fa0,92(a4)
32: 656d lui a0,0x1b
34: 2d75772f 0x2d75772f
38: 6971 lui s2,0x1c
3a: 676e flw fa4,216(sp)
3c: 312d jal fffffc66 <__heap_start+0xffffdc66>
3e: 3735 jal ffffff6a <__heap_start+0xffffdf6a>
40: 7369722f 0x7369722f
44: 672d7663 bgeu s10,s2,6b0 <printInt-0x950>
48: 756e flw fa0,248(sp)
4a: 742d lui s0,0xfffeb
4c: 636c6f6f jal t5,c6682 <__heap_start+0xc4682>
50: 6168 flw fa0,68(a0)
52: 6e69 lui t3,0x1a
54: 6975622f 0x6975622f
58: 646c flw fa1,76(s0)
5a: 672d lui a4,0xb
5c: 6e2d6363 bltu s10,sp,742 <printInt-0x8be>
60: 7765 lui a4,0xffff9
62: 696c flw fa1,84(a0)
64: 2d62 fld fs10,24(sp)
66: 67617473 csrrci s0,0x676,2
6a: 3265 jal fffffa12 <__heap_start+0xffffda12>
6c: 7369722f 0x7369722f
70: 32337663 bgeu t1,gp,39c <printInt-0xc64>
74: 752d lui a0,0xfffeb
76: 6b6e flw fs6,216(sp)
78: 6f6e flw ft10,216(sp)
7a: 652d6e77 0x652d6e77
7e: 666c flw fa1,76(a2)
80: 62696c2f 0x62696c2f
84: 00636367 0x636367
88: 20554e47 fmsub.s ft8,fa0,ft5,ft4,rmm
8c: 5341 li t1,-16
8e: 3220 fld fs0,96(a2)
90: 332e fld ft6,232(sp)
92: 2e31 jal 3ae <printInt-0xc52>
94: 0031 c.nop 12

74
test/testcases/magic.c Normal file
View File

@ -0,0 +1,74 @@
#include "io.inc"
int make[3][3];
int color[10];
int count[1];
int i;
int j;
void origin(int N) {
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++)
make[i][j] = 0;
}
}
void search(int x, int y, int z) {
int s;
int i;
int j;
if ((y > 0 || y < 0) || x == 0 ||
make[x - 1][0] + make[x - 1][1] + make[x - 1][2] == 15) {
if (x == 2 && y == 2) {
make[2][2] = 45 - z;
s = make[0][0] + make[0][1] + make[0][2];
if (make[1][0] + make[1][1] + make[1][2] == s &&
make[2][0] + make[2][1] + make[2][2] == s &&
make[0][0] + make[1][0] + make[2][0] == s &&
make[0][1] + make[1][1] + make[2][1] == s &&
make[0][2] + make[1][2] + make[2][2] == s &&
make[0][0] + make[1][1] + make[2][2] == s &&
make[2][0] + make[1][1] + make[0][2] == s) {
count[0] = count[0] + 1;
for (i = 0; i <= 2; i++) {
for (j = 0; j <= 2; j++) {
printInt(make[i][j]);
printStr(" ");
}
printStr("\n");
}
printStr("\n");
}
} else {
if (y == 2) {
make[x][y] = 15 - make[x][0] - make[x][1];
if (make[x][y] > 0 && make[x][y] < 10 && color[make[x][y]] == 0) {
color[make[x][y]] = 1;
if (y == 2)
search(x + 1, 0, z + make[x][y]);
else
search(x, y + 1, z + make[x][y]);
color[make[x][y]] = 0;
}
} else {
for (i = 1; i <= 9; i++) {
if (color[i] == 0) {
color[i] = 1;
make[x][y] = i;
if (y == 2)
search(x + 1, 0, z + i);
else
search(x, y + 1, z + i);
make[x][y] = 0;
color[i] = 0;
}
}
}
}
}
}
int main() {
origin(3);
search(0, 0, 0);
printInt(count[0]);
return judgeResult % Mod; // 106
}

80
test/testcases/magic.data Normal file
View File

@ -0,0 +1,80 @@
@00000000
37 01 02 00 EF 10 C0 37 13 05 F0 0F B7 06 03 00
23 82 A6 00 6F F0 9F FF
@00001000
37 17 00 00 83 27 07 4E 33 45 F5 00 13 05 D5 0A
23 20 A7 4E 67 80 00 00 83 47 05 00 63 82 07 02
37 17 00 00 83 26 07 4E B3 C7 D7 00 93 87 97 20
23 20 F7 4E 13 05 15 00 83 47 05 00 E3 94 07 FE
67 80 00 00 B7 17 00 00 23 A6 07 48 63 5C A0 04
B7 17 00 00 93 87 C7 4B 93 16 15 00 B3 86 A6 00
93 96 26 00 B3 86 F6 00 13 06 10 00 93 05 20 00
6F 00 00 01 23 A4 07 00 93 87 C7 00 63 8C D7 00
23 A0 07 00 E3 5A A6 FE 23 A2 07 00 E3 C4 A5 FE
6F F0 9F FE B7 17 00 00 23 A4 A7 48 B7 17 00 00
23 A6 A7 48 67 80 00 00 13 01 01 FE 23 2E 11 00
23 2C 81 00 23 2A 91 00 23 28 21 01 23 26 31 01
23 24 41 01 23 22 51 01 23 20 61 01 13 09 05 00
13 0A 06 00 63 9A 05 06 63 06 05 12 13 05 F5 FF
B7 17 00 00 93 87 C7 4B 13 17 15 00 B3 06 A7 00
93 96 26 00 B3 86 D7 00 03 A6 06 00 83 A6 46 00
B3 06 D6 00 33 07 A7 00 13 17 27 00 B3 87 E7 00
83 A7 87 00 B3 87 F6 00 13 07 F0 00 63 8C E7 24
83 20 C1 01 03 24 81 01 83 24 41 01 03 29 01 01
83 29 C1 00 03 2A 81 00 83 2A 41 00 03 2B 01 00
13 01 01 02 67 80 00 00 93 07 20 00 63 0A F5 0A
93 07 20 00 63 98 F5 0A B7 17 00 00 13 17 19 00
33 07 27 01 13 17 27 00 93 87 C7 4B B3 87 E7 00
03 A7 07 00 13 06 F0 00 33 06 E6 40 03 A7 47 00
33 06 E6 40 23 A4 C7 00 13 07 F6 FF 93 07 80 00
E3 E8 E7 F8 37 17 00 00 93 17 26 00 13 07 07 49
B3 07 F7 00 83 A7 07 00 E3 9C 07 F6 37 14 00 00
13 04 04 49 93 17 26 00 B3 07 F4 00 13 07 10 00
23 A0 E7 00 33 06 46 01 93 05 00 00 13 05 19 00
EF F0 9F ED B7 17 00 00 13 17 19 00 33 07 27 01
13 17 27 00 93 87 C7 4B B3 87 E7 00 83 A7 87 00
93 97 27 00 33 04 F4 00 23 20 04 00 6F F0 5F F2
63 8A F5 02 37 14 00 00 13 04 04 49 93 04 10 00
B7 19 00 00 93 89 C9 4B 93 17 19 00 B3 87 27 01
B3 87 B7 00 93 97 27 00 B3 89 F9 00 93 8A 15 00
6F 00 80 13 93 07 D0 02 33 8A C7 40 B7 17 00 00
93 87 C7 4B 23 A0 47 03 03 A6 07 00 03 A8 47 00
B3 08 06 01 03 A5 87 00 33 87 A8 00 83 A6 C7 00
83 A5 07 01 03 A3 47 01 B3 87 B6 00 B3 87 67 00
E3 98 E7 EA B7 17 00 00 93 87 C7 4B 03 AE 87 01
83 AE C7 01 B3 07 DE 01 B3 87 47 01 E3 9A E7 E8
B3 07 D6 00 B3 87 C7 01 E3 94 E7 E8 B3 07 B8 00
B3 87 D7 01 E3 9E E7 E6 B3 07 65 00 B3 87 47 01
E3 98 E7 E6 33 06 B6 00 33 0A 46 01 E3 12 EA E6
B3 85 C5 01 E3 9E B8 E4 37 17 00 00 83 27 87 4B
93 87 17 00 23 2C F7 4A 37 14 00 00 13 04 C4 4B
13 0B 44 02 B7 1A 00 00 13 0A 30 00 B7 19 00 00
13 09 04 00 93 04 00 00 03 25 09 00 EF F0 5F D0
13 85 CA 47 EF F0 5F D1 93 84 14 00 13 09 49 00
E3 94 44 FF 13 85 09 48 EF F0 1F D0 13 04 C4 00
E3 18 64 FD 37 15 00 00 13 05 05 48 EF F0 DF CE
6F F0 1F DF 93 07 10 00 23 22 F4 00 23 A0 99 00
33 06 9A 00 93 85 0A 00 13 05 09 00 EF F0 DF D5
23 A0 09 00 23 22 04 00 93 84 14 00 13 04 44 00
93 07 A0 00 E3 8E F4 DA 83 27 44 00 E3 96 07 FE
6F F0 5F FC 93 07 20 00 E3 1C F9 DC 6F F0 9F E8
13 01 01 FF 23 26 11 00 13 05 30 00 EF F0 9F CB
13 06 00 00 93 05 00 00 13 05 00 00 EF F0 DF D0
B7 17 00 00 03 A5 87 4B EF F0 9F C5 93 05 D0 0F
B7 17 00 00 03 A5 07 4E EF 00 40 09 83 20 C1 00
13 01 01 01 67 80 00 00 63 40 05 06 63 C6 05 06
13 86 05 00 93 05 05 00 13 05 F0 FF 63 0C 06 02
93 06 10 00 63 7A B6 00 63 58 C0 00 13 16 16 00
93 96 16 00 E3 6A B6 FE 13 05 00 00 63 E6 C5 00
B3 85 C5 40 33 65 D5 00 93 D6 16 00 13 56 16 00
E3 96 06 FE 67 80 00 00 93 82 00 00 EF F0 5F FB
13 85 05 00 67 80 02 00 33 05 A0 40 63 D8 05 00
B3 05 B0 40 6F F0 DF F9 B3 05 B0 40 93 82 00 00
EF F0 1F F9 33 05 A0 40 67 80 02 00 93 82 00 00
63 CA 05 00 63 4C 05 00 EF F0 9F F7 13 85 05 00
67 80 02 00 B3 05 B0 40 E3 58 05 FE 33 05 A0 40
EF F0 1F F6 33 05 B0 40 67 80 02 00
@0000147C
20 00 00 00 0A 00 00 00
@00001484
FD 00 00 00

612
test/testcases/magic.dump Normal file
View File

@ -0,0 +1,612 @@
./test/test.om: file format elf32-littleriscv
Disassembly of section .rom:
00000000 <.rom>:
0: 00020137 lui sp,0x20
4: 37c010ef jal ra,1380 <main>
8: 0ff00513 li a0,255
c: 000306b7 lui a3,0x30
10: 00a68223 sb a0,4(a3) # 30004 <__heap_start+0x2e004>
14: ff9ff06f j c <printInt-0xff4>
Disassembly of section .text:
00001000 <printInt>:
1000: 00001737 lui a4,0x1
1004: 4e072783 lw a5,1248(a4) # 14e0 <__bss_end>
1008: 00f54533 xor a0,a0,a5
100c: 0ad50513 addi a0,a0,173
1010: 4ea72023 sw a0,1248(a4)
1014: 00008067 ret
00001018 <printStr>:
1018: 00054783 lbu a5,0(a0)
101c: 02078263 beqz a5,1040 <printStr+0x28>
1020: 00001737 lui a4,0x1
1024: 4e072683 lw a3,1248(a4) # 14e0 <__bss_end>
1028: 00d7c7b3 xor a5,a5,a3
102c: 20978793 addi a5,a5,521
1030: 4ef72023 sw a5,1248(a4)
1034: 00150513 addi a0,a0,1
1038: 00054783 lbu a5,0(a0)
103c: fe0794e3 bnez a5,1024 <printStr+0xc>
1040: 00008067 ret
00001044 <origin>:
1044: 000017b7 lui a5,0x1
1048: 4807a623 sw zero,1164(a5) # 148c <i>
104c: 04a05c63 blez a0,10a4 <origin+0x60>
1050: 000017b7 lui a5,0x1
1054: 4bc78793 addi a5,a5,1212 # 14bc <make>
1058: 00151693 slli a3,a0,0x1
105c: 00a686b3 add a3,a3,a0
1060: 00269693 slli a3,a3,0x2
1064: 00f686b3 add a3,a3,a5
1068: 00100613 li a2,1
106c: 00200593 li a1,2
1070: 0100006f j 1080 <origin+0x3c>
1074: 0007a423 sw zero,8(a5)
1078: 00c78793 addi a5,a5,12
107c: 00d78c63 beq a5,a3,1094 <origin+0x50>
1080: 0007a023 sw zero,0(a5)
1084: fea65ae3 bge a2,a0,1078 <origin+0x34>
1088: 0007a223 sw zero,4(a5)
108c: fea5c4e3 blt a1,a0,1074 <origin+0x30>
1090: fe9ff06f j 1078 <origin+0x34>
1094: 000017b7 lui a5,0x1
1098: 48a7a423 sw a0,1160(a5) # 1488 <__bss_start>
109c: 000017b7 lui a5,0x1
10a0: 48a7a623 sw a0,1164(a5) # 148c <i>
10a4: 00008067 ret
000010a8 <search>:
10a8: fe010113 addi sp,sp,-32 # 1ffe0 <__heap_start+0x1dfe0>
10ac: 00112e23 sw ra,28(sp)
10b0: 00812c23 sw s0,24(sp)
10b4: 00912a23 sw s1,20(sp)
10b8: 01212823 sw s2,16(sp)
10bc: 01312623 sw s3,12(sp)
10c0: 01412423 sw s4,8(sp)
10c4: 01512223 sw s5,4(sp)
10c8: 01612023 sw s6,0(sp)
10cc: 00050913 mv s2,a0
10d0: 00060a13 mv s4,a2
10d4: 06059a63 bnez a1,1148 <search+0xa0>
10d8: 12050663 beqz a0,1204 <search+0x15c>
10dc: fff50513 addi a0,a0,-1
10e0: 000017b7 lui a5,0x1
10e4: 4bc78793 addi a5,a5,1212 # 14bc <make>
10e8: 00151713 slli a4,a0,0x1
10ec: 00a706b3 add a3,a4,a0
10f0: 00269693 slli a3,a3,0x2
10f4: 00d786b3 add a3,a5,a3
10f8: 0006a603 lw a2,0(a3)
10fc: 0046a683 lw a3,4(a3)
1100: 00d606b3 add a3,a2,a3
1104: 00a70733 add a4,a4,a0
1108: 00271713 slli a4,a4,0x2
110c: 00e787b3 add a5,a5,a4
1110: 0087a783 lw a5,8(a5)
1114: 00f687b3 add a5,a3,a5
1118: 00f00713 li a4,15
111c: 24e78c63 beq a5,a4,1374 <search+0x2cc>
1120: 01c12083 lw ra,28(sp)
1124: 01812403 lw s0,24(sp)
1128: 01412483 lw s1,20(sp)
112c: 01012903 lw s2,16(sp)
1130: 00c12983 lw s3,12(sp)
1134: 00812a03 lw s4,8(sp)
1138: 00412a83 lw s5,4(sp)
113c: 00012b03 lw s6,0(sp)
1140: 02010113 addi sp,sp,32
1144: 00008067 ret
1148: 00200793 li a5,2
114c: 0af50a63 beq a0,a5,1200 <search+0x158>
1150: 00200793 li a5,2
1154: 0af59863 bne a1,a5,1204 <search+0x15c>
1158: 000017b7 lui a5,0x1
115c: 00191713 slli a4,s2,0x1
1160: 01270733 add a4,a4,s2
1164: 00271713 slli a4,a4,0x2
1168: 4bc78793 addi a5,a5,1212 # 14bc <make>
116c: 00e787b3 add a5,a5,a4
1170: 0007a703 lw a4,0(a5)
1174: 00f00613 li a2,15
1178: 40e60633 sub a2,a2,a4
117c: 0047a703 lw a4,4(a5)
1180: 40e60633 sub a2,a2,a4
1184: 00c7a423 sw a2,8(a5)
1188: fff60713 addi a4,a2,-1
118c: 00800793 li a5,8
1190: f8e7e8e3 bltu a5,a4,1120 <search+0x78>
1194: 00001737 lui a4,0x1
1198: 00261793 slli a5,a2,0x2
119c: 49070713 addi a4,a4,1168 # 1490 <color>
11a0: 00f707b3 add a5,a4,a5
11a4: 0007a783 lw a5,0(a5)
11a8: f6079ce3 bnez a5,1120 <search+0x78>
11ac: 00001437 lui s0,0x1
11b0: 49040413 addi s0,s0,1168 # 1490 <color>
11b4: 00261793 slli a5,a2,0x2
11b8: 00f407b3 add a5,s0,a5
11bc: 00100713 li a4,1
11c0: 00e7a023 sw a4,0(a5)
11c4: 01460633 add a2,a2,s4
11c8: 00000593 li a1,0
11cc: 00190513 addi a0,s2,1
11d0: ed9ff0ef jal ra,10a8 <search>
11d4: 000017b7 lui a5,0x1
11d8: 00191713 slli a4,s2,0x1
11dc: 01270733 add a4,a4,s2
11e0: 00271713 slli a4,a4,0x2
11e4: 4bc78793 addi a5,a5,1212 # 14bc <make>
11e8: 00e787b3 add a5,a5,a4
11ec: 0087a783 lw a5,8(a5)
11f0: 00279793 slli a5,a5,0x2
11f4: 00f40433 add s0,s0,a5
11f8: 00042023 sw zero,0(s0)
11fc: f25ff06f j 1120 <search+0x78>
1200: 02f58a63 beq a1,a5,1234 <search+0x18c>
1204: 00001437 lui s0,0x1
1208: 49040413 addi s0,s0,1168 # 1490 <color>
120c: 00100493 li s1,1
1210: 000019b7 lui s3,0x1
1214: 4bc98993 addi s3,s3,1212 # 14bc <make>
1218: 00191793 slli a5,s2,0x1
121c: 012787b3 add a5,a5,s2
1220: 00b787b3 add a5,a5,a1
1224: 00279793 slli a5,a5,0x2
1228: 00f989b3 add s3,s3,a5
122c: 00158a93 addi s5,a1,1
1230: 1380006f j 1368 <search+0x2c0>
1234: 02d00793 li a5,45
1238: 40c78a33 sub s4,a5,a2
123c: 000017b7 lui a5,0x1
1240: 4bc78793 addi a5,a5,1212 # 14bc <make>
1244: 0347a023 sw s4,32(a5)
1248: 0007a603 lw a2,0(a5)
124c: 0047a803 lw a6,4(a5)
1250: 010608b3 add a7,a2,a6
1254: 0087a503 lw a0,8(a5)
1258: 00a88733 add a4,a7,a0
125c: 00c7a683 lw a3,12(a5)
1260: 0107a583 lw a1,16(a5)
1264: 0147a303 lw t1,20(a5)
1268: 00b687b3 add a5,a3,a1
126c: 006787b3 add a5,a5,t1
1270: eae798e3 bne a5,a4,1120 <search+0x78>
1274: 000017b7 lui a5,0x1
1278: 4bc78793 addi a5,a5,1212 # 14bc <make>
127c: 0187ae03 lw t3,24(a5)
1280: 01c7ae83 lw t4,28(a5)
1284: 01de07b3 add a5,t3,t4
1288: 014787b3 add a5,a5,s4
128c: e8e79ae3 bne a5,a4,1120 <search+0x78>
1290: 00d607b3 add a5,a2,a3
1294: 01c787b3 add a5,a5,t3
1298: e8e794e3 bne a5,a4,1120 <search+0x78>
129c: 00b807b3 add a5,a6,a1
12a0: 01d787b3 add a5,a5,t4
12a4: e6e79ee3 bne a5,a4,1120 <search+0x78>
12a8: 006507b3 add a5,a0,t1
12ac: 014787b3 add a5,a5,s4
12b0: e6e798e3 bne a5,a4,1120 <search+0x78>
12b4: 00b60633 add a2,a2,a1
12b8: 01460a33 add s4,a2,s4
12bc: e6ea12e3 bne s4,a4,1120 <search+0x78>
12c0: 01c585b3 add a1,a1,t3
12c4: e4b89ee3 bne a7,a1,1120 <search+0x78>
12c8: 00001737 lui a4,0x1
12cc: 4b872783 lw a5,1208(a4) # 14b8 <count>
12d0: 00178793 addi a5,a5,1
12d4: 4af72c23 sw a5,1208(a4)
12d8: 00001437 lui s0,0x1
12dc: 4bc40413 addi s0,s0,1212 # 14bc <make>
12e0: 02440b13 addi s6,s0,36
12e4: 00001ab7 lui s5,0x1
12e8: 00300a13 li s4,3
12ec: 000019b7 lui s3,0x1
12f0: 00040913 mv s2,s0
12f4: 00000493 li s1,0
12f8: 00092503 lw a0,0(s2)
12fc: d05ff0ef jal ra,1000 <printInt>
1300: 47ca8513 addi a0,s5,1148 # 147c <__modsi3+0x30>
1304: d15ff0ef jal ra,1018 <printStr>
1308: 00148493 addi s1,s1,1
130c: 00490913 addi s2,s2,4
1310: ff4494e3 bne s1,s4,12f8 <search+0x250>
1314: 48098513 addi a0,s3,1152 # 1480 <__modsi3+0x34>
1318: d01ff0ef jal ra,1018 <printStr>
131c: 00c40413 addi s0,s0,12
1320: fd6418e3 bne s0,s6,12f0 <search+0x248>
1324: 00001537 lui a0,0x1
1328: 48050513 addi a0,a0,1152 # 1480 <__modsi3+0x34>
132c: cedff0ef jal ra,1018 <printStr>
1330: df1ff06f j 1120 <search+0x78>
1334: 00100793 li a5,1
1338: 00f42223 sw a5,4(s0)
133c: 0099a023 sw s1,0(s3)
1340: 009a0633 add a2,s4,s1
1344: 000a8593 mv a1,s5
1348: 00090513 mv a0,s2
134c: d5dff0ef jal ra,10a8 <search>
1350: 0009a023 sw zero,0(s3)
1354: 00042223 sw zero,4(s0)
1358: 00148493 addi s1,s1,1
135c: 00440413 addi s0,s0,4
1360: 00a00793 li a5,10
1364: daf48ee3 beq s1,a5,1120 <search+0x78>
1368: 00442783 lw a5,4(s0)
136c: fe0796e3 bnez a5,1358 <search+0x2b0>
1370: fc5ff06f j 1334 <search+0x28c>
1374: 00200793 li a5,2
1378: dcf91ce3 bne s2,a5,1150 <search+0xa8>
137c: e89ff06f j 1204 <search+0x15c>
00001380 <main>:
1380: ff010113 addi sp,sp,-16
1384: 00112623 sw ra,12(sp)
1388: 00300513 li a0,3
138c: cb9ff0ef jal ra,1044 <origin>
1390: 00000613 li a2,0
1394: 00000593 li a1,0
1398: 00000513 li a0,0
139c: d0dff0ef jal ra,10a8 <search>
13a0: 000017b7 lui a5,0x1
13a4: 4b87a503 lw a0,1208(a5) # 14b8 <count>
13a8: c59ff0ef jal ra,1000 <printInt>
13ac: 0fd00593 li a1,253
13b0: 000017b7 lui a5,0x1
13b4: 4e07a503 lw a0,1248(a5) # 14e0 <__bss_end>
13b8: 094000ef jal ra,144c <__modsi3>
13bc: 00c12083 lw ra,12(sp)
13c0: 01010113 addi sp,sp,16
13c4: 00008067 ret
000013c8 <__divsi3>:
13c8: 06054063 bltz a0,1428 <__umodsi3+0x10>
13cc: 0605c663 bltz a1,1438 <__umodsi3+0x20>
000013d0 <__udivsi3>:
13d0: 00058613 mv a2,a1
13d4: 00050593 mv a1,a0
13d8: fff00513 li a0,-1
13dc: 02060c63 beqz a2,1414 <__udivsi3+0x44>
13e0: 00100693 li a3,1
13e4: 00b67a63 bgeu a2,a1,13f8 <__udivsi3+0x28>
13e8: 00c05863 blez a2,13f8 <__udivsi3+0x28>
13ec: 00161613 slli a2,a2,0x1
13f0: 00169693 slli a3,a3,0x1
13f4: feb66ae3 bltu a2,a1,13e8 <__udivsi3+0x18>
13f8: 00000513 li a0,0
13fc: 00c5e663 bltu a1,a2,1408 <__udivsi3+0x38>
1400: 40c585b3 sub a1,a1,a2
1404: 00d56533 or a0,a0,a3
1408: 0016d693 srli a3,a3,0x1
140c: 00165613 srli a2,a2,0x1
1410: fe0696e3 bnez a3,13fc <__udivsi3+0x2c>
1414: 00008067 ret
00001418 <__umodsi3>:
1418: 00008293 mv t0,ra
141c: fb5ff0ef jal ra,13d0 <__udivsi3>
1420: 00058513 mv a0,a1
1424: 00028067 jr t0
1428: 40a00533 neg a0,a0
142c: 0005d863 bgez a1,143c <__umodsi3+0x24>
1430: 40b005b3 neg a1,a1
1434: f9dff06f j 13d0 <__udivsi3>
1438: 40b005b3 neg a1,a1
143c: 00008293 mv t0,ra
1440: f91ff0ef jal ra,13d0 <__udivsi3>
1444: 40a00533 neg a0,a0
1448: 00028067 jr t0
0000144c <__modsi3>:
144c: 00008293 mv t0,ra
1450: 0005ca63 bltz a1,1464 <__modsi3+0x18>
1454: 00054c63 bltz a0,146c <__modsi3+0x20>
1458: f79ff0ef jal ra,13d0 <__udivsi3>
145c: 00058513 mv a0,a1
1460: 00028067 jr t0
1464: 40b005b3 neg a1,a1
1468: fe0558e3 bgez a0,1458 <__modsi3+0xc>
146c: 40a00533 neg a0,a0
1470: f61ff0ef jal ra,13d0 <__udivsi3>
1474: 40b00533 neg a0,a1
1478: 00028067 jr t0
Disassembly of section .rodata.str1.4:
0000147c <.rodata.str1.4>:
147c: 0020 addi s0,sp,8
147e: 0000 unimp
1480: 000a c.slli zero,0x2
...
Disassembly of section .srodata:
00001484 <Mod>:
1484: 00fd addi ra,ra,31
...
Disassembly of section .bss:
00001488 <j>:
1488: 0000 unimp
...
0000148c <i>:
148c: 0000 unimp
...
00001490 <color>:
...
000014b8 <count>:
14b8: 0000 unimp
...
000014bc <make>:
...
Disassembly of section .sbss:
000014e0 <judgeResult>:
14e0: 0000 unimp
...
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 fmsub.d ft6,ft6,ft4,ft7,rmm
4: 2820 fld fs0,80(s0)
6: 29554e47 fmsub.s ft8,fa0,fs5,ft5,rmm
a: 3820 fld fs0,112(s0)
c: 332e fld ft6,232(sp)
e: 302e fld ft0,232(sp)
...
Disassembly of section .debug_line:
00000000 <.debug_line>:
0: 0164 addi s1,sp,140
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0045 c.nop 17
8: 0000 unimp
a: 0101 addi sp,sp,0
c: 000d0efb 0xd0efb
10: 0101 addi sp,sp,0
12: 0101 addi sp,sp,0
14: 0000 unimp
16: 0100 addi s0,sp,128
18: 0000 unimp
1a: 2e01 jal 32a <printInt-0xcd6>
1c: 2f2e fld ft10,200(sp)
1e: 2e2e fld ft8,200(sp)
20: 2f2e2e2f 0x2f2e2e2f
24: 2f2e fld ft10,200(sp)
26: 6972 flw fs2,28(sp)
28: 2d766373 csrrsi t1,0x2d7,12
2c: 2f636367 0x2f636367
30: 696c flw fa1,84(a0)
32: 6762 flw fa4,24(sp)
34: 632f6363 bltu t5,s2,65a <printInt-0x9a6>
38: 69666e6f jal t3,666ce <__heap_start+0x646ce>
3c: 69722f67 0x69722f67
40: 00766373 csrrsi t1,0x7,12
44: 6400 flw fs0,8(s0)
46: 7669 lui a2,0xffffa
48: 532e lw t1,232(sp)
4a: 0100 addi s0,sp,128
4c: 0000 unimp
4e: 0000 unimp
50: 0205 addi tp,tp,1
52: 13c8 addi a0,sp,484
54: 0000 unimp
56: 0100c403 lbu s0,16(ra)
5a: 04090103 lb sp,64(s2)
5e: 0100 addi s0,sp,128
60: 04090403 lb s0,64(s2)
64: 0100 addi s0,sp,128
66: 04090103 lb sp,64(s2)
6a: 0100 addi s0,sp,128
6c: 04090103 lb sp,64(s2)
70: 0100 addi s0,sp,128
72: 04090103 lb sp,64(s2)
76: 0100 addi s0,sp,128
78: 04090103 lb sp,64(s2)
7c: 0100 addi s0,sp,128
7e: 04090103 lb sp,64(s2)
82: 0100 addi s0,sp,128
84: 04090203 lb tp,64(s2)
88: 0100 addi s0,sp,128
8a: 04090103 lb sp,64(s2)
8e: 0100 addi s0,sp,128
90: 04090103 lb sp,64(s2)
94: 0100 addi s0,sp,128
96: 04090103 lb sp,64(s2)
9a: 0100 addi s0,sp,128
9c: 04090203 lb tp,64(s2)
a0: 0100 addi s0,sp,128
a2: 04090203 lb tp,64(s2)
a6: 0100 addi s0,sp,128
a8: 04090103 lb sp,64(s2)
ac: 0100 addi s0,sp,128
ae: 04090103 lb sp,64(s2)
b2: 0100 addi s0,sp,128
b4: 04090203 lb tp,64(s2)
b8: 0100 addi s0,sp,128
ba: 04090103 lb sp,64(s2)
be: 0100 addi s0,sp,128
c0: 04090103 lb sp,64(s2)
c4: 0100 addi s0,sp,128
c6: 04090203 lb tp,64(s2)
ca: 0100 addi s0,sp,128
cc: 04090503 lb a0,64(s2)
d0: 0100 addi s0,sp,128
d2: 04090103 lb sp,64(s2)
d6: 0100 addi s0,sp,128
d8: 04090103 lb sp,64(s2)
dc: 0100 addi s0,sp,128
de: 04090103 lb sp,64(s2)
e2: 0100 addi s0,sp,128
e4: 04090503 lb a0,64(s2)
e8: 0100 addi s0,sp,128
ea: 04090103 lb sp,64(s2)
ee: 0100 addi s0,sp,128
f0: 04090103 lb sp,64(s2)
f4: 0100 addi s0,sp,128
f6: 04090103 lb sp,64(s2)
fa: 0100 addi s0,sp,128
fc: 04090203 lb tp,64(s2)
100: 0100 addi s0,sp,128
102: 04090203 lb tp,64(s2)
106: 0100 addi s0,sp,128
108: 04090103 lb sp,64(s2)
10c: 0100 addi s0,sp,128
10e: 04090103 lb sp,64(s2)
112: 0100 addi s0,sp,128
114: 04090103 lb sp,64(s2)
118: 0100 addi s0,sp,128
11a: 04090403 lb s0,64(s2)
11e: 0100 addi s0,sp,128
120: 04090103 lb sp,64(s2)
124: 0100 addi s0,sp,128
126: 04090103 lb sp,64(s2)
12a: 0100 addi s0,sp,128
12c: 04090203 lb tp,64(s2)
130: 0100 addi s0,sp,128
132: 04090103 lb sp,64(s2)
136: 0100 addi s0,sp,128
138: 04090103 lb sp,64(s2)
13c: 0100 addi s0,sp,128
13e: 04090203 lb tp,64(s2)
142: 0100 addi s0,sp,128
144: 04090103 lb sp,64(s2)
148: 0100 addi s0,sp,128
14a: 04090203 lb tp,64(s2)
14e: 0100 addi s0,sp,128
150: 04090103 lb sp,64(s2)
154: 0100 addi s0,sp,128
156: 04090103 lb sp,64(s2)
15a: 0100 addi s0,sp,128
15c: 04090103 lb sp,64(s2)
160: 0100 addi s0,sp,128
162: 0409 addi s0,s0,2
164: 0000 unimp
166: 0101 addi sp,sp,0
Disassembly of section .debug_info:
00000000 <.debug_info>:
0: 0022 c.slli zero,0x8
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0104 addi s1,sp,128
c: 0000 unimp
e: 0000 unimp
10: 13c8 addi a0,sp,484
12: 0000 unimp
14: 147c addi a5,sp,556
16: 0000 unimp
18: 0000 unimp
1a: 0000 unimp
1c: 0000002f 0x2f
20: 0088 addi a0,sp,64
22: 0000 unimp
24: 8001 c.srli64 s0
Disassembly of section .debug_abbrev:
00000000 <.debug_abbrev>:
0: 1101 addi sp,sp,-32
2: 1000 addi s0,sp,32
4: 1106 slli sp,sp,0x21
6: 1201 addi tp,tp,-32
8: 0301 addi t1,t1,0
a: 1b0e slli s6,s6,0x23
c: 250e fld fa0,192(sp)
e: 130e slli t1,t1,0x23
10: 0005 c.nop 1
...
Disassembly of section .debug_aranges:
00000000 <.debug_aranges>:
0: 001c 0x1c
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0004 0x4
c: 0000 unimp
e: 0000 unimp
10: 13c8 addi a0,sp,484
12: 0000 unimp
14: 00b4 addi a3,sp,72
...
Disassembly of section .debug_str:
00000000 <.debug_str>:
0: 2e2e fld ft8,200(sp)
2: 2f2e2e2f 0x2f2e2e2f
6: 2e2e fld ft8,200(sp)
8: 722f2e2f 0x722f2e2f
c: 7369 lui t1,0xffffa
e: 672d7663 bgeu s10,s2,67a <printInt-0x986>
12: 6c2f6363 bltu t5,sp,6d8 <printInt-0x928>
16: 6269 lui tp,0x1a
18: 2f636367 0x2f636367
1c: 666e6f63 bltu t3,t1,69a <printInt-0x966>
20: 6769 lui a4,0x1a
22: 7369722f 0x7369722f
26: 642f7663 bgeu t5,sp,672 <printInt-0x98e>
2a: 7669 lui a2,0xffffa
2c: 532e lw t1,232(sp)
2e: 2f00 fld fs0,24(a4)
30: 6f68 flw fa0,92(a4)
32: 656d lui a0,0x1b
34: 2d75772f 0x2d75772f
38: 6971 lui s2,0x1c
3a: 676e flw fa4,216(sp)
3c: 312d jal fffffc66 <__heap_start+0xffffdc66>
3e: 3735 jal ffffff6a <__heap_start+0xffffdf6a>
40: 7369722f 0x7369722f
44: 672d7663 bgeu s10,s2,6b0 <printInt-0x950>
48: 756e flw fa0,248(sp)
4a: 742d lui s0,0xfffeb
4c: 636c6f6f jal t5,c6682 <__heap_start+0xc4682>
50: 6168 flw fa0,68(a0)
52: 6e69 lui t3,0x1a
54: 6975622f 0x6975622f
58: 646c flw fa1,76(s0)
5a: 672d lui a4,0xb
5c: 6e2d6363 bltu s10,sp,742 <printInt-0x8be>
60: 7765 lui a4,0xffff9
62: 696c flw fa1,84(a0)
64: 2d62 fld fs10,24(sp)
66: 67617473 csrrci s0,0x676,2
6a: 3265 jal fffffa12 <__heap_start+0xffffda12>
6c: 7369722f 0x7369722f
70: 32337663 bgeu t1,gp,39c <printInt-0xc64>
74: 752d lui a0,0xfffeb
76: 6b6e flw fs6,216(sp)
78: 6f6e flw ft10,216(sp)
7a: 652d6e77 0x652d6e77
7e: 666c flw fa1,76(a2)
80: 62696c2f 0x62696c2f
84: 00636367 0x636367
88: 20554e47 fmsub.s ft8,fa0,ft5,ft4,rmm
8c: 5341 li t1,-16
8e: 3220 fld fs0,96(a2)
90: 332e fld ft6,232(sp)
92: 2e31 jal 3ae <printInt-0xc52>
94: 0031 c.nop 12

View File

@ -0,0 +1,11 @@
#include "io.inc"
int a(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9,
int a10, int a11, int a12, int a13, int a14, int a15) {
return a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8 + a9 + a10 + a11 + a12 + a13 +
a14 + a15;
}
int main() {
printInt(a(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15));
return judgeResult % Mod; // 40
}

View File

@ -0,0 +1,30 @@
@00000000
37 01 02 00 EF 10 80 09 13 05 F0 0F B7 06 03 00
23 82 A6 00 6F F0 9F FF
@00001000
37 17 00 00 83 27 07 18 33 45 F5 00 13 05 D5 0A
23 20 A7 18 67 80 00 00 83 47 05 00 63 82 07 02
37 17 00 00 83 26 07 18 B3 C7 D7 00 93 87 97 20
23 20 F7 18 13 05 15 00 83 47 05 00 E3 94 07 FE
67 80 00 00 B3 05 B5 00 B3 85 C5 00 B3 85 D5 00
B3 85 E5 00 B3 85 F5 00 B3 85 05 01 B3 85 15 01
83 27 01 00 B3 87 F5 00 83 25 41 00 B3 87 B7 00
83 25 81 00 B3 87 B7 00 03 25 C1 00 B3 87 A7 00
03 25 01 01 B3 87 A7 00 03 25 41 01 B3 87 A7 00
03 25 81 01 33 85 A7 00 67 80 00 00 13 01 01 FF
23 26 11 00 13 05 80 07 EF F0 9F F5 93 05 D0 0F
B7 17 00 00 03 A5 07 18 EF 00 40 09 83 20 C1 00
13 01 01 01 67 80 00 00 63 40 05 06 63 C6 05 06
13 86 05 00 93 05 05 00 13 05 F0 FF 63 0C 06 02
93 06 10 00 63 7A B6 00 63 58 C0 00 13 16 16 00
93 96 16 00 E3 6A B6 FE 13 05 00 00 63 E6 C5 00
B3 85 C5 40 33 65 D5 00 93 D6 16 00 13 56 16 00
E3 96 06 FE 67 80 00 00 93 82 00 00 EF F0 5F FB
13 85 05 00 67 80 02 00 33 05 A0 40 63 D8 05 00
B3 05 B0 40 6F F0 DF F9 B3 05 B0 40 93 82 00 00
EF F0 1F F9 33 05 A0 40 67 80 02 00 93 82 00 00
63 CA 05 00 63 4C 05 00 EF F0 9F F7 13 85 05 00
67 80 02 00 B3 05 B0 40 E3 58 05 FE 33 05 A0 40
EF F0 1F F6 33 05 B0 40 67 80 02 00
@0000117C
FD 00 00 00

View File

@ -0,0 +1,390 @@
./test/test.om: file format elf32-littleriscv
Disassembly of section .rom:
00000000 <.rom>:
0: 00020137 lui sp,0x20
4: 098010ef jal ra,109c <main>
8: 0ff00513 li a0,255
c: 000306b7 lui a3,0x30
10: 00a68223 sb a0,4(a3) # 30004 <__heap_start+0x2e004>
14: ff9ff06f j c <printInt-0xff4>
Disassembly of section .text:
00001000 <printInt>:
1000: 00001737 lui a4,0x1
1004: 18072783 lw a5,384(a4) # 1180 <__bss_end>
1008: 00f54533 xor a0,a0,a5
100c: 0ad50513 addi a0,a0,173
1010: 18a72023 sw a0,384(a4)
1014: 00008067 ret
00001018 <printStr>:
1018: 00054783 lbu a5,0(a0)
101c: 02078263 beqz a5,1040 <printStr+0x28>
1020: 00001737 lui a4,0x1
1024: 18072683 lw a3,384(a4) # 1180 <__bss_end>
1028: 00d7c7b3 xor a5,a5,a3
102c: 20978793 addi a5,a5,521
1030: 18f72023 sw a5,384(a4)
1034: 00150513 addi a0,a0,1
1038: 00054783 lbu a5,0(a0)
103c: fe0794e3 bnez a5,1024 <printStr+0xc>
1040: 00008067 ret
00001044 <a>:
1044: 00b505b3 add a1,a0,a1
1048: 00c585b3 add a1,a1,a2
104c: 00d585b3 add a1,a1,a3
1050: 00e585b3 add a1,a1,a4
1054: 00f585b3 add a1,a1,a5
1058: 010585b3 add a1,a1,a6
105c: 011585b3 add a1,a1,a7
1060: 00012783 lw a5,0(sp) # 20000 <__heap_start+0x1e000>
1064: 00f587b3 add a5,a1,a5
1068: 00412583 lw a1,4(sp)
106c: 00b787b3 add a5,a5,a1
1070: 00812583 lw a1,8(sp)
1074: 00b787b3 add a5,a5,a1
1078: 00c12503 lw a0,12(sp)
107c: 00a787b3 add a5,a5,a0
1080: 01012503 lw a0,16(sp)
1084: 00a787b3 add a5,a5,a0
1088: 01412503 lw a0,20(sp)
108c: 00a787b3 add a5,a5,a0
1090: 01812503 lw a0,24(sp)
1094: 00a78533 add a0,a5,a0
1098: 00008067 ret
0000109c <main>:
109c: ff010113 addi sp,sp,-16
10a0: 00112623 sw ra,12(sp)
10a4: 07800513 li a0,120
10a8: f59ff0ef jal ra,1000 <printInt>
10ac: 0fd00593 li a1,253
10b0: 000017b7 lui a5,0x1
10b4: 1807a503 lw a0,384(a5) # 1180 <__bss_end>
10b8: 094000ef jal ra,114c <__modsi3>
10bc: 00c12083 lw ra,12(sp)
10c0: 01010113 addi sp,sp,16
10c4: 00008067 ret
000010c8 <__divsi3>:
10c8: 06054063 bltz a0,1128 <__umodsi3+0x10>
10cc: 0605c663 bltz a1,1138 <__umodsi3+0x20>
000010d0 <__udivsi3>:
10d0: 00058613 mv a2,a1
10d4: 00050593 mv a1,a0
10d8: fff00513 li a0,-1
10dc: 02060c63 beqz a2,1114 <__udivsi3+0x44>
10e0: 00100693 li a3,1
10e4: 00b67a63 bgeu a2,a1,10f8 <__udivsi3+0x28>
10e8: 00c05863 blez a2,10f8 <__udivsi3+0x28>
10ec: 00161613 slli a2,a2,0x1
10f0: 00169693 slli a3,a3,0x1
10f4: feb66ae3 bltu a2,a1,10e8 <__udivsi3+0x18>
10f8: 00000513 li a0,0
10fc: 00c5e663 bltu a1,a2,1108 <__udivsi3+0x38>
1100: 40c585b3 sub a1,a1,a2
1104: 00d56533 or a0,a0,a3
1108: 0016d693 srli a3,a3,0x1
110c: 00165613 srli a2,a2,0x1
1110: fe0696e3 bnez a3,10fc <__udivsi3+0x2c>
1114: 00008067 ret
00001118 <__umodsi3>:
1118: 00008293 mv t0,ra
111c: fb5ff0ef jal ra,10d0 <__udivsi3>
1120: 00058513 mv a0,a1
1124: 00028067 jr t0
1128: 40a00533 neg a0,a0
112c: 0005d863 bgez a1,113c <__umodsi3+0x24>
1130: 40b005b3 neg a1,a1
1134: f9dff06f j 10d0 <__udivsi3>
1138: 40b005b3 neg a1,a1
113c: 00008293 mv t0,ra
1140: f91ff0ef jal ra,10d0 <__udivsi3>
1144: 40a00533 neg a0,a0
1148: 00028067 jr t0
0000114c <__modsi3>:
114c: 00008293 mv t0,ra
1150: 0005ca63 bltz a1,1164 <__modsi3+0x18>
1154: 00054c63 bltz a0,116c <__modsi3+0x20>
1158: f79ff0ef jal ra,10d0 <__udivsi3>
115c: 00058513 mv a0,a1
1160: 00028067 jr t0
1164: 40b005b3 neg a1,a1
1168: fe0558e3 bgez a0,1158 <__modsi3+0xc>
116c: 40a00533 neg a0,a0
1170: f61ff0ef jal ra,10d0 <__udivsi3>
1174: 40b00533 neg a0,a1
1178: 00028067 jr t0
Disassembly of section .srodata:
0000117c <Mod>:
117c: 00fd addi ra,ra,31
...
Disassembly of section .sbss:
00001180 <judgeResult>:
1180: 0000 unimp
...
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 fmsub.d ft6,ft6,ft4,ft7,rmm
4: 2820 fld fs0,80(s0)
6: 29554e47 fmsub.s ft8,fa0,fs5,ft5,rmm
a: 3820 fld fs0,112(s0)
c: 332e fld ft6,232(sp)
e: 302e fld ft0,232(sp)
...
Disassembly of section .debug_line:
00000000 <.debug_line>:
0: 0164 addi s1,sp,140
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0045 c.nop 17
8: 0000 unimp
a: 0101 addi sp,sp,0
c: 000d0efb 0xd0efb
10: 0101 addi sp,sp,0
12: 0101 addi sp,sp,0
14: 0000 unimp
16: 0100 addi s0,sp,128
18: 0000 unimp
1a: 2e01 jal 32a <printInt-0xcd6>
1c: 2f2e fld ft10,200(sp)
1e: 2e2e fld ft8,200(sp)
20: 2f2e2e2f 0x2f2e2e2f
24: 2f2e fld ft10,200(sp)
26: 6972 flw fs2,28(sp)
28: 2d766373 csrrsi t1,0x2d7,12
2c: 2f636367 0x2f636367
30: 696c flw fa1,84(a0)
32: 6762 flw fa4,24(sp)
34: 632f6363 bltu t5,s2,65a <printInt-0x9a6>
38: 69666e6f jal t3,666ce <__heap_start+0x646ce>
3c: 69722f67 0x69722f67
40: 00766373 csrrsi t1,0x7,12
44: 6400 flw fs0,8(s0)
46: 7669 lui a2,0xffffa
48: 532e lw t1,232(sp)
4a: 0100 addi s0,sp,128
4c: 0000 unimp
4e: 0000 unimp
50: 0205 addi tp,tp,1
52: 10c8 addi a0,sp,100
54: 0000 unimp
56: 0100c403 lbu s0,16(ra)
5a: 04090103 lb sp,64(s2)
5e: 0100 addi s0,sp,128
60: 04090403 lb s0,64(s2)
64: 0100 addi s0,sp,128
66: 04090103 lb sp,64(s2)
6a: 0100 addi s0,sp,128
6c: 04090103 lb sp,64(s2)
70: 0100 addi s0,sp,128
72: 04090103 lb sp,64(s2)
76: 0100 addi s0,sp,128
78: 04090103 lb sp,64(s2)
7c: 0100 addi s0,sp,128
7e: 04090103 lb sp,64(s2)
82: 0100 addi s0,sp,128
84: 04090203 lb tp,64(s2)
88: 0100 addi s0,sp,128
8a: 04090103 lb sp,64(s2)
8e: 0100 addi s0,sp,128
90: 04090103 lb sp,64(s2)
94: 0100 addi s0,sp,128
96: 04090103 lb sp,64(s2)
9a: 0100 addi s0,sp,128
9c: 04090203 lb tp,64(s2)
a0: 0100 addi s0,sp,128
a2: 04090203 lb tp,64(s2)
a6: 0100 addi s0,sp,128
a8: 04090103 lb sp,64(s2)
ac: 0100 addi s0,sp,128
ae: 04090103 lb sp,64(s2)
b2: 0100 addi s0,sp,128
b4: 04090203 lb tp,64(s2)
b8: 0100 addi s0,sp,128
ba: 04090103 lb sp,64(s2)
be: 0100 addi s0,sp,128
c0: 04090103 lb sp,64(s2)
c4: 0100 addi s0,sp,128
c6: 04090203 lb tp,64(s2)
ca: 0100 addi s0,sp,128
cc: 04090503 lb a0,64(s2)
d0: 0100 addi s0,sp,128
d2: 04090103 lb sp,64(s2)
d6: 0100 addi s0,sp,128
d8: 04090103 lb sp,64(s2)
dc: 0100 addi s0,sp,128
de: 04090103 lb sp,64(s2)
e2: 0100 addi s0,sp,128
e4: 04090503 lb a0,64(s2)
e8: 0100 addi s0,sp,128
ea: 04090103 lb sp,64(s2)
ee: 0100 addi s0,sp,128
f0: 04090103 lb sp,64(s2)
f4: 0100 addi s0,sp,128
f6: 04090103 lb sp,64(s2)
fa: 0100 addi s0,sp,128
fc: 04090203 lb tp,64(s2)
100: 0100 addi s0,sp,128
102: 04090203 lb tp,64(s2)
106: 0100 addi s0,sp,128
108: 04090103 lb sp,64(s2)
10c: 0100 addi s0,sp,128
10e: 04090103 lb sp,64(s2)
112: 0100 addi s0,sp,128
114: 04090103 lb sp,64(s2)
118: 0100 addi s0,sp,128
11a: 04090403 lb s0,64(s2)
11e: 0100 addi s0,sp,128
120: 04090103 lb sp,64(s2)
124: 0100 addi s0,sp,128
126: 04090103 lb sp,64(s2)
12a: 0100 addi s0,sp,128
12c: 04090203 lb tp,64(s2)
130: 0100 addi s0,sp,128
132: 04090103 lb sp,64(s2)
136: 0100 addi s0,sp,128
138: 04090103 lb sp,64(s2)
13c: 0100 addi s0,sp,128
13e: 04090203 lb tp,64(s2)
142: 0100 addi s0,sp,128
144: 04090103 lb sp,64(s2)
148: 0100 addi s0,sp,128
14a: 04090203 lb tp,64(s2)
14e: 0100 addi s0,sp,128
150: 04090103 lb sp,64(s2)
154: 0100 addi s0,sp,128
156: 04090103 lb sp,64(s2)
15a: 0100 addi s0,sp,128
15c: 04090103 lb sp,64(s2)
160: 0100 addi s0,sp,128
162: 0409 addi s0,s0,2
164: 0000 unimp
166: 0101 addi sp,sp,0
Disassembly of section .debug_info:
00000000 <.debug_info>:
0: 0022 c.slli zero,0x8
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0104 addi s1,sp,128
c: 0000 unimp
e: 0000 unimp
10: 10c8 addi a0,sp,100
12: 0000 unimp
14: 117c addi a5,sp,172
16: 0000 unimp
18: 0000 unimp
1a: 0000 unimp
1c: 0000002f 0x2f
20: 0088 addi a0,sp,64
22: 0000 unimp
24: 8001 c.srli64 s0
Disassembly of section .debug_abbrev:
00000000 <.debug_abbrev>:
0: 1101 addi sp,sp,-32
2: 1000 addi s0,sp,32
4: 1106 slli sp,sp,0x21
6: 1201 addi tp,tp,-32
8: 0301 addi t1,t1,0
a: 1b0e slli s6,s6,0x23
c: 250e fld fa0,192(sp)
e: 130e slli t1,t1,0x23
10: 0005 c.nop 1
...
Disassembly of section .debug_aranges:
00000000 <.debug_aranges>:
0: 001c 0x1c
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0004 0x4
c: 0000 unimp
e: 0000 unimp
10: 10c8 addi a0,sp,100
12: 0000 unimp
14: 00b4 addi a3,sp,72
...
Disassembly of section .debug_str:
00000000 <.debug_str>:
0: 2e2e fld ft8,200(sp)
2: 2f2e2e2f 0x2f2e2e2f
6: 2e2e fld ft8,200(sp)
8: 722f2e2f 0x722f2e2f
c: 7369 lui t1,0xffffa
e: 672d7663 bgeu s10,s2,67a <printInt-0x986>
12: 6c2f6363 bltu t5,sp,6d8 <printInt-0x928>
16: 6269 lui tp,0x1a
18: 2f636367 0x2f636367
1c: 666e6f63 bltu t3,t1,69a <printInt-0x966>
20: 6769 lui a4,0x1a
22: 7369722f 0x7369722f
26: 642f7663 bgeu t5,sp,672 <printInt-0x98e>
2a: 7669 lui a2,0xffffa
2c: 532e lw t1,232(sp)
2e: 2f00 fld fs0,24(a4)
30: 6f68 flw fa0,92(a4)
32: 656d lui a0,0x1b
34: 2d75772f 0x2d75772f
38: 6971 lui s2,0x1c
3a: 676e flw fa4,216(sp)
3c: 312d jal fffffc66 <__heap_start+0xffffdc66>
3e: 3735 jal ffffff6a <__heap_start+0xffffdf6a>
40: 7369722f 0x7369722f
44: 672d7663 bgeu s10,s2,6b0 <printInt-0x950>
48: 756e flw fa0,248(sp)
4a: 742d lui s0,0xfffeb
4c: 636c6f6f jal t5,c6682 <__heap_start+0xc4682>
50: 6168 flw fa0,68(a0)
52: 6e69 lui t3,0x1a
54: 6975622f 0x6975622f
58: 646c flw fa1,76(s0)
5a: 672d lui a4,0xb
5c: 6e2d6363 bltu s10,sp,742 <printInt-0x8be>
60: 7765 lui a4,0xffff9
62: 696c flw fa1,84(a0)
64: 2d62 fld fs10,24(sp)
66: 67617473 csrrci s0,0x676,2
6a: 3265 jal fffffa12 <__heap_start+0xffffda12>
6c: 7369722f 0x7369722f
70: 32337663 bgeu t1,gp,39c <printInt-0xc64>
74: 752d lui a0,0xfffeb
76: 6b6e flw fs6,216(sp)
78: 6f6e flw ft10,216(sp)
7a: 652d6e77 0x652d6e77
7e: 666c flw fa1,76(a2)
80: 62696c2f 0x62696c2f
84: 00636367 0x636367
88: 20554e47 fmsub.s ft8,fa0,ft5,ft4,rmm
8c: 5341 li t1,-16
8e: 3220 fld fs0,96(a2)
90: 332e fld ft6,232(sp)
92: 2e31 jal 3ae <printInt-0xc52>
94: 0031 c.nop 12

View File

@ -0,0 +1,37 @@
#include "io.inc"
int a[4][11];
int i;
int j;
struct rec {
int num;
int c;
} b[5];
void printNum(int num) { printInt(num); }
int main() {
for (i = 0; i < 4; i++) {
for (j = 0; j < 10; j++)
a[i][j] = 888;
}
for (i = 0; i < 5; i++) {
b[i].num = -1;
}
printNum(a[3][9]);
for (i = 0; i <= 3; i++)
for (j = 0; j <= 9; j++)
a[i][j] = i * 10 + j;
for (i = 0; i <= 3; i++)
for (j = 0; j <= 9; j++)
printNum(a[i][j]);
a[2][10] = 0;
printNum(a[2][10]);
b[0].num = -2;
b[a[2][10]].num = -10;
printNum(b[0].num);
printNum(b[1].num);
return judgeResult % Mod; // 115
}

View File

@ -0,0 +1,50 @@
@00000000
37 01 02 00 EF 10 80 05 13 05 F0 0F B7 06 03 00
23 82 A6 00 6F F0 9F FF
@00001000
37 17 00 00 83 27 C7 39 33 45 F5 00 13 05 D5 0A
23 2E A7 38 67 80 00 00 83 47 05 00 63 82 07 02
37 17 00 00 83 26 C7 39 B3 C7 D7 00 93 87 97 20
23 2E F7 38 13 05 15 00 83 47 05 00 E3 94 07 FE
67 80 00 00 13 01 01 FF 23 26 11 00 EF F0 5F FB
83 20 C1 00 13 01 01 01 67 80 00 00 13 01 01 FE
23 2E 11 00 23 2C 81 00 23 2A 91 00 23 28 21 01
23 26 31 01 23 24 41 01 37 14 00 00 13 04 C4 2E
13 07 84 02 13 06 84 0D 93 06 80 37 6F 00 C0 00
13 07 C7 02 63 0C C7 00 93 07 87 FD 23 A0 D7 00
93 87 47 00 E3 9C E7 FE 6F F0 9F FE B7 17 00 00
13 07 A0 00 23 A2 E7 2E B7 17 00 00 93 87 C7 2B
13 07 F0 FF 23 A0 E7 00 23 A4 E7 00 23 A8 E7 00
23 AC E7 00 23 A0 E7 02 B7 17 00 00 13 07 50 00
23 A4 E7 2E B7 17 00 00 03 A5 47 39 EF F0 5F F1
93 06 A0 00 13 06 20 03 93 87 66 FF 13 07 04 00
23 20 F7 00 93 87 17 00 13 07 47 00 E3 9A F6 FE
13 04 C4 02 93 86 A6 00 E3 90 C6 FE B7 17 00 00
23 A4 07 2E 37 14 00 00 37 19 00 00 13 09 C9 2E
93 84 07 00 93 09 90 00 13 0A 30 00 23 22 04 2E
13 07 00 00 83 A6 84 2E 93 97 16 00 B3 87 D7 00
93 97 27 00 B3 87 D7 40 B3 87 E7 00 93 97 27 00
B3 07 F9 00 03 A5 07 00 EF F0 9F E9 83 27 44 2E
13 87 17 00 23 22 E4 2E E3 D6 E9 FC 83 A7 84 2E
93 87 17 00 23 A4 F4 2E E3 5A FA FA B7 14 00 00
93 84 C4 2E 23 A0 04 08 13 05 00 00 EF F0 5F E6
37 14 00 00 13 04 C4 2B 93 07 E0 FF 23 20 F4 00
83 A7 04 08 93 97 37 00 B3 07 F4 00 13 07 60 FF
23 A0 E7 00 03 25 04 00 EF F0 9F E3 03 25 84 00
EF F0 1F E3 93 05 D0 0F B7 17 00 00 03 A5 C7 39
EF 00 80 0A 83 20 C1 01 03 24 81 01 83 24 41 01
03 29 01 01 83 29 C1 00 03 2A 81 00 13 01 01 02
67 80 00 00 63 40 05 06 63 C6 05 06 13 86 05 00
93 05 05 00 13 05 F0 FF 63 0C 06 02 93 06 10 00
63 7A B6 00 63 58 C0 00 13 16 16 00 93 96 16 00
E3 6A B6 FE 13 05 00 00 63 E6 C5 00 B3 85 C5 40
33 65 D5 00 93 D6 16 00 13 56 16 00 E3 96 06 FE
67 80 00 00 93 82 00 00 EF F0 5F FB 13 85 05 00
67 80 02 00 33 05 A0 40 63 D8 05 00 B3 05 B0 40
6F F0 DF F9 B3 05 B0 40 93 82 00 00 EF F0 1F F9
33 05 A0 40 67 80 02 00 93 82 00 00 63 CA 05 00
63 4C 05 00 EF F0 9F F7 13 85 05 00 67 80 02 00
B3 05 B0 40 E3 58 05 FE 33 05 A0 40 EF F0 1F F6
33 05 B0 40 67 80 02 00
@000012B8
FD 00 00 00

View File

@ -0,0 +1,485 @@
./test/test.om: file format elf32-littleriscv
Disassembly of section .rom:
00000000 <.rom>:
0: 00020137 lui sp,0x20
4: 058010ef jal ra,105c <main>
8: 0ff00513 li a0,255
c: 000306b7 lui a3,0x30
10: 00a68223 sb a0,4(a3) # 30004 <__heap_start+0x2e004>
14: ff9ff06f j c <printInt-0xff4>
Disassembly of section .text:
00001000 <printInt>:
1000: 00001737 lui a4,0x1
1004: 39c72783 lw a5,924(a4) # 139c <__bss_end>
1008: 00f54533 xor a0,a0,a5
100c: 0ad50513 addi a0,a0,173
1010: 38a72e23 sw a0,924(a4)
1014: 00008067 ret
00001018 <printStr>:
1018: 00054783 lbu a5,0(a0)
101c: 02078263 beqz a5,1040 <printStr+0x28>
1020: 00001737 lui a4,0x1
1024: 39c72683 lw a3,924(a4) # 139c <__bss_end>
1028: 00d7c7b3 xor a5,a5,a3
102c: 20978793 addi a5,a5,521
1030: 38f72e23 sw a5,924(a4)
1034: 00150513 addi a0,a0,1
1038: 00054783 lbu a5,0(a0)
103c: fe0794e3 bnez a5,1024 <printStr+0xc>
1040: 00008067 ret
00001044 <printNum>:
1044: ff010113 addi sp,sp,-16 # 1fff0 <__heap_start+0x1dff0>
1048: 00112623 sw ra,12(sp)
104c: fb5ff0ef jal ra,1000 <printInt>
1050: 00c12083 lw ra,12(sp)
1054: 01010113 addi sp,sp,16
1058: 00008067 ret
0000105c <main>:
105c: fe010113 addi sp,sp,-32
1060: 00112e23 sw ra,28(sp)
1064: 00812c23 sw s0,24(sp)
1068: 00912a23 sw s1,20(sp)
106c: 01212823 sw s2,16(sp)
1070: 01312623 sw s3,12(sp)
1074: 01412423 sw s4,8(sp)
1078: 00001437 lui s0,0x1
107c: 2ec40413 addi s0,s0,748 # 12ec <a>
1080: 02840713 addi a4,s0,40
1084: 0d840613 addi a2,s0,216
1088: 37800693 li a3,888
108c: 00c0006f j 1098 <main+0x3c>
1090: 02c70713 addi a4,a4,44
1094: 00c70c63 beq a4,a2,10ac <main+0x50>
1098: fd870793 addi a5,a4,-40
109c: 00d7a023 sw a3,0(a5)
10a0: 00478793 addi a5,a5,4
10a4: fee79ce3 bne a5,a4,109c <main+0x40>
10a8: fe9ff06f j 1090 <main+0x34>
10ac: 000017b7 lui a5,0x1
10b0: 00a00713 li a4,10
10b4: 2ee7a223 sw a4,740(a5) # 12e4 <j>
10b8: 000017b7 lui a5,0x1
10bc: 2bc78793 addi a5,a5,700 # 12bc <__bss_start>
10c0: fff00713 li a4,-1
10c4: 00e7a023 sw a4,0(a5)
10c8: 00e7a423 sw a4,8(a5)
10cc: 00e7a823 sw a4,16(a5)
10d0: 00e7ac23 sw a4,24(a5)
10d4: 02e7a023 sw a4,32(a5)
10d8: 000017b7 lui a5,0x1
10dc: 00500713 li a4,5
10e0: 2ee7a423 sw a4,744(a5) # 12e8 <i>
10e4: 000017b7 lui a5,0x1
10e8: 3947a503 lw a0,916(a5) # 1394 <a+0xa8>
10ec: f15ff0ef jal ra,1000 <printInt>
10f0: 00a00693 li a3,10
10f4: 03200613 li a2,50
10f8: ff668793 addi a5,a3,-10
10fc: 00040713 mv a4,s0
1100: 00f72023 sw a5,0(a4)
1104: 00178793 addi a5,a5,1
1108: 00470713 addi a4,a4,4
110c: fef69ae3 bne a3,a5,1100 <main+0xa4>
1110: 02c40413 addi s0,s0,44
1114: 00a68693 addi a3,a3,10
1118: fec690e3 bne a3,a2,10f8 <main+0x9c>
111c: 000017b7 lui a5,0x1
1120: 2e07a423 sw zero,744(a5) # 12e8 <i>
1124: 00001437 lui s0,0x1
1128: 00001937 lui s2,0x1
112c: 2ec90913 addi s2,s2,748 # 12ec <a>
1130: 00078493 mv s1,a5
1134: 00900993 li s3,9
1138: 00300a13 li s4,3
113c: 2e042223 sw zero,740(s0) # 12e4 <j>
1140: 00000713 li a4,0
1144: 2e84a683 lw a3,744(s1)
1148: 00169793 slli a5,a3,0x1
114c: 00d787b3 add a5,a5,a3
1150: 00279793 slli a5,a5,0x2
1154: 40d787b3 sub a5,a5,a3
1158: 00e787b3 add a5,a5,a4
115c: 00279793 slli a5,a5,0x2
1160: 00f907b3 add a5,s2,a5
1164: 0007a503 lw a0,0(a5)
1168: e99ff0ef jal ra,1000 <printInt>
116c: 2e442783 lw a5,740(s0)
1170: 00178713 addi a4,a5,1
1174: 2ee42223 sw a4,740(s0)
1178: fce9d6e3 bge s3,a4,1144 <main+0xe8>
117c: 2e84a783 lw a5,744(s1)
1180: 00178793 addi a5,a5,1
1184: 2ef4a423 sw a5,744(s1)
1188: fafa5ae3 bge s4,a5,113c <main+0xe0>
118c: 000014b7 lui s1,0x1
1190: 2ec48493 addi s1,s1,748 # 12ec <a>
1194: 0804a023 sw zero,128(s1)
1198: 00000513 li a0,0
119c: e65ff0ef jal ra,1000 <printInt>
11a0: 00001437 lui s0,0x1
11a4: 2bc40413 addi s0,s0,700 # 12bc <__bss_start>
11a8: ffe00793 li a5,-2
11ac: 00f42023 sw a5,0(s0)
11b0: 0804a783 lw a5,128(s1)
11b4: 00379793 slli a5,a5,0x3
11b8: 00f407b3 add a5,s0,a5
11bc: ff600713 li a4,-10
11c0: 00e7a023 sw a4,0(a5)
11c4: 00042503 lw a0,0(s0)
11c8: e39ff0ef jal ra,1000 <printInt>
11cc: 00842503 lw a0,8(s0)
11d0: e31ff0ef jal ra,1000 <printInt>
11d4: 0fd00593 li a1,253
11d8: 000017b7 lui a5,0x1
11dc: 39c7a503 lw a0,924(a5) # 139c <__bss_end>
11e0: 0a8000ef jal ra,1288 <__modsi3>
11e4: 01c12083 lw ra,28(sp)
11e8: 01812403 lw s0,24(sp)
11ec: 01412483 lw s1,20(sp)
11f0: 01012903 lw s2,16(sp)
11f4: 00c12983 lw s3,12(sp)
11f8: 00812a03 lw s4,8(sp)
11fc: 02010113 addi sp,sp,32
1200: 00008067 ret
00001204 <__divsi3>:
1204: 06054063 bltz a0,1264 <__umodsi3+0x10>
1208: 0605c663 bltz a1,1274 <__umodsi3+0x20>
0000120c <__udivsi3>:
120c: 00058613 mv a2,a1
1210: 00050593 mv a1,a0
1214: fff00513 li a0,-1
1218: 02060c63 beqz a2,1250 <__udivsi3+0x44>
121c: 00100693 li a3,1
1220: 00b67a63 bgeu a2,a1,1234 <__udivsi3+0x28>
1224: 00c05863 blez a2,1234 <__udivsi3+0x28>
1228: 00161613 slli a2,a2,0x1
122c: 00169693 slli a3,a3,0x1
1230: feb66ae3 bltu a2,a1,1224 <__udivsi3+0x18>
1234: 00000513 li a0,0
1238: 00c5e663 bltu a1,a2,1244 <__udivsi3+0x38>
123c: 40c585b3 sub a1,a1,a2
1240: 00d56533 or a0,a0,a3
1244: 0016d693 srli a3,a3,0x1
1248: 00165613 srli a2,a2,0x1
124c: fe0696e3 bnez a3,1238 <__udivsi3+0x2c>
1250: 00008067 ret
00001254 <__umodsi3>:
1254: 00008293 mv t0,ra
1258: fb5ff0ef jal ra,120c <__udivsi3>
125c: 00058513 mv a0,a1
1260: 00028067 jr t0
1264: 40a00533 neg a0,a0
1268: 0005d863 bgez a1,1278 <__umodsi3+0x24>
126c: 40b005b3 neg a1,a1
1270: f9dff06f j 120c <__udivsi3>
1274: 40b005b3 neg a1,a1
1278: 00008293 mv t0,ra
127c: f91ff0ef jal ra,120c <__udivsi3>
1280: 40a00533 neg a0,a0
1284: 00028067 jr t0
00001288 <__modsi3>:
1288: 00008293 mv t0,ra
128c: 0005ca63 bltz a1,12a0 <__modsi3+0x18>
1290: 00054c63 bltz a0,12a8 <__modsi3+0x20>
1294: f79ff0ef jal ra,120c <__udivsi3>
1298: 00058513 mv a0,a1
129c: 00028067 jr t0
12a0: 40b005b3 neg a1,a1
12a4: fe0558e3 bgez a0,1294 <__modsi3+0xc>
12a8: 40a00533 neg a0,a0
12ac: f61ff0ef jal ra,120c <__udivsi3>
12b0: 40b00533 neg a0,a1
12b4: 00028067 jr t0
Disassembly of section .srodata:
000012b8 <Mod>:
12b8: 00fd addi ra,ra,31
...
Disassembly of section .bss:
000012bc <b>:
...
000012e4 <j>:
12e4: 0000 unimp
...
000012e8 <i>:
12e8: 0000 unimp
...
000012ec <a>:
...
Disassembly of section .sbss:
0000139c <judgeResult>:
139c: 0000 unimp
...
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 fmsub.d ft6,ft6,ft4,ft7,rmm
4: 2820 fld fs0,80(s0)
6: 29554e47 fmsub.s ft8,fa0,fs5,ft5,rmm
a: 3820 fld fs0,112(s0)
c: 332e fld ft6,232(sp)
e: 302e fld ft0,232(sp)
...
Disassembly of section .debug_line:
00000000 <.debug_line>:
0: 0164 addi s1,sp,140
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0045 c.nop 17
8: 0000 unimp
a: 0101 addi sp,sp,0
c: 000d0efb 0xd0efb
10: 0101 addi sp,sp,0
12: 0101 addi sp,sp,0
14: 0000 unimp
16: 0100 addi s0,sp,128
18: 0000 unimp
1a: 2e01 jal 32a <printInt-0xcd6>
1c: 2f2e fld ft10,200(sp)
1e: 2e2e fld ft8,200(sp)
20: 2f2e2e2f 0x2f2e2e2f
24: 2f2e fld ft10,200(sp)
26: 6972 flw fs2,28(sp)
28: 2d766373 csrrsi t1,0x2d7,12
2c: 2f636367 0x2f636367
30: 696c flw fa1,84(a0)
32: 6762 flw fa4,24(sp)
34: 632f6363 bltu t5,s2,65a <printInt-0x9a6>
38: 69666e6f jal t3,666ce <__heap_start+0x646ce>
3c: 69722f67 0x69722f67
40: 00766373 csrrsi t1,0x7,12
44: 6400 flw fs0,8(s0)
46: 7669 lui a2,0xffffa
48: 532e lw t1,232(sp)
4a: 0100 addi s0,sp,128
4c: 0000 unimp
4e: 0000 unimp
50: 0205 addi tp,tp,1
52: 1204 addi s1,sp,288
54: 0000 unimp
56: 0100c403 lbu s0,16(ra)
5a: 04090103 lb sp,64(s2)
5e: 0100 addi s0,sp,128
60: 04090403 lb s0,64(s2)
64: 0100 addi s0,sp,128
66: 04090103 lb sp,64(s2)
6a: 0100 addi s0,sp,128
6c: 04090103 lb sp,64(s2)
70: 0100 addi s0,sp,128
72: 04090103 lb sp,64(s2)
76: 0100 addi s0,sp,128
78: 04090103 lb sp,64(s2)
7c: 0100 addi s0,sp,128
7e: 04090103 lb sp,64(s2)
82: 0100 addi s0,sp,128
84: 04090203 lb tp,64(s2)
88: 0100 addi s0,sp,128
8a: 04090103 lb sp,64(s2)
8e: 0100 addi s0,sp,128
90: 04090103 lb sp,64(s2)
94: 0100 addi s0,sp,128
96: 04090103 lb sp,64(s2)
9a: 0100 addi s0,sp,128
9c: 04090203 lb tp,64(s2)
a0: 0100 addi s0,sp,128
a2: 04090203 lb tp,64(s2)
a6: 0100 addi s0,sp,128
a8: 04090103 lb sp,64(s2)
ac: 0100 addi s0,sp,128
ae: 04090103 lb sp,64(s2)
b2: 0100 addi s0,sp,128
b4: 04090203 lb tp,64(s2)
b8: 0100 addi s0,sp,128
ba: 04090103 lb sp,64(s2)
be: 0100 addi s0,sp,128
c0: 04090103 lb sp,64(s2)
c4: 0100 addi s0,sp,128
c6: 04090203 lb tp,64(s2)
ca: 0100 addi s0,sp,128
cc: 04090503 lb a0,64(s2)
d0: 0100 addi s0,sp,128
d2: 04090103 lb sp,64(s2)
d6: 0100 addi s0,sp,128
d8: 04090103 lb sp,64(s2)
dc: 0100 addi s0,sp,128
de: 04090103 lb sp,64(s2)
e2: 0100 addi s0,sp,128
e4: 04090503 lb a0,64(s2)
e8: 0100 addi s0,sp,128
ea: 04090103 lb sp,64(s2)
ee: 0100 addi s0,sp,128
f0: 04090103 lb sp,64(s2)
f4: 0100 addi s0,sp,128
f6: 04090103 lb sp,64(s2)
fa: 0100 addi s0,sp,128
fc: 04090203 lb tp,64(s2)
100: 0100 addi s0,sp,128
102: 04090203 lb tp,64(s2)
106: 0100 addi s0,sp,128
108: 04090103 lb sp,64(s2)
10c: 0100 addi s0,sp,128
10e: 04090103 lb sp,64(s2)
112: 0100 addi s0,sp,128
114: 04090103 lb sp,64(s2)
118: 0100 addi s0,sp,128
11a: 04090403 lb s0,64(s2)
11e: 0100 addi s0,sp,128
120: 04090103 lb sp,64(s2)
124: 0100 addi s0,sp,128
126: 04090103 lb sp,64(s2)
12a: 0100 addi s0,sp,128
12c: 04090203 lb tp,64(s2)
130: 0100 addi s0,sp,128
132: 04090103 lb sp,64(s2)
136: 0100 addi s0,sp,128
138: 04090103 lb sp,64(s2)
13c: 0100 addi s0,sp,128
13e: 04090203 lb tp,64(s2)
142: 0100 addi s0,sp,128
144: 04090103 lb sp,64(s2)
148: 0100 addi s0,sp,128
14a: 04090203 lb tp,64(s2)
14e: 0100 addi s0,sp,128
150: 04090103 lb sp,64(s2)
154: 0100 addi s0,sp,128
156: 04090103 lb sp,64(s2)
15a: 0100 addi s0,sp,128
15c: 04090103 lb sp,64(s2)
160: 0100 addi s0,sp,128
162: 0409 addi s0,s0,2
164: 0000 unimp
166: 0101 addi sp,sp,0
Disassembly of section .debug_info:
00000000 <.debug_info>:
0: 0022 c.slli zero,0x8
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0104 addi s1,sp,128
c: 0000 unimp
e: 0000 unimp
10: 1204 addi s1,sp,288
12: 0000 unimp
14: 12b8 addi a4,sp,360
16: 0000 unimp
18: 0000 unimp
1a: 0000 unimp
1c: 0000002f 0x2f
20: 0088 addi a0,sp,64
22: 0000 unimp
24: 8001 c.srli64 s0
Disassembly of section .debug_abbrev:
00000000 <.debug_abbrev>:
0: 1101 addi sp,sp,-32
2: 1000 addi s0,sp,32
4: 1106 slli sp,sp,0x21
6: 1201 addi tp,tp,-32
8: 0301 addi t1,t1,0
a: 1b0e slli s6,s6,0x23
c: 250e fld fa0,192(sp)
e: 130e slli t1,t1,0x23
10: 0005 c.nop 1
...
Disassembly of section .debug_aranges:
00000000 <.debug_aranges>:
0: 001c 0x1c
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0004 0x4
c: 0000 unimp
e: 0000 unimp
10: 1204 addi s1,sp,288
12: 0000 unimp
14: 00b4 addi a3,sp,72
...
Disassembly of section .debug_str:
00000000 <.debug_str>:
0: 2e2e fld ft8,200(sp)
2: 2f2e2e2f 0x2f2e2e2f
6: 2e2e fld ft8,200(sp)
8: 722f2e2f 0x722f2e2f
c: 7369 lui t1,0xffffa
e: 672d7663 bgeu s10,s2,67a <printInt-0x986>
12: 6c2f6363 bltu t5,sp,6d8 <printInt-0x928>
16: 6269 lui tp,0x1a
18: 2f636367 0x2f636367
1c: 666e6f63 bltu t3,t1,69a <printInt-0x966>
20: 6769 lui a4,0x1a
22: 7369722f 0x7369722f
26: 642f7663 bgeu t5,sp,672 <printInt-0x98e>
2a: 7669 lui a2,0xffffa
2c: 532e lw t1,232(sp)
2e: 2f00 fld fs0,24(a4)
30: 6f68 flw fa0,92(a4)
32: 656d lui a0,0x1b
34: 2d75772f 0x2d75772f
38: 6971 lui s2,0x1c
3a: 676e flw fa4,216(sp)
3c: 312d jal fffffc66 <__heap_start+0xffffdc66>
3e: 3735 jal ffffff6a <__heap_start+0xffffdf6a>
40: 7369722f 0x7369722f
44: 672d7663 bgeu s10,s2,6b0 <printInt-0x950>
48: 756e flw fa0,248(sp)
4a: 742d lui s0,0xfffeb
4c: 636c6f6f jal t5,c6682 <__heap_start+0xc4682>
50: 6168 flw fa0,68(a0)
52: 6e69 lui t3,0x1a
54: 6975622f 0x6975622f
58: 646c flw fa1,76(s0)
5a: 672d lui a4,0xb
5c: 6e2d6363 bltu s10,sp,742 <printInt-0x8be>
60: 7765 lui a4,0xffff9
62: 696c flw fa1,84(a0)
64: 2d62 fld fs10,24(sp)
66: 67617473 csrrci s0,0x676,2
6a: 3265 jal fffffa12 <__heap_start+0xffffda12>
6c: 7369722f 0x7369722f
70: 32337663 bgeu t1,gp,39c <printInt-0xc64>
74: 752d lui a0,0xfffeb
76: 6b6e flw fs6,216(sp)
78: 6f6e flw ft10,216(sp)
7a: 652d6e77 0x652d6e77
7e: 666c flw fa1,76(a2)
80: 62696c2f 0x62696c2f
84: 00636367 0x636367
88: 20554e47 fmsub.s ft8,fa0,ft5,ft4,rmm
8c: 5341 li t1,-16
8e: 3220 fld fs0,96(a2)
90: 332e fld ft6,232(sp)
92: 2e31 jal 3ae <printInt-0xc52>
94: 0031 c.nop 12

6
test/testcases/naive.c Normal file
View File

@ -0,0 +1,6 @@
#include "io.inc"
int main() {
printInt(177);
return judgeResult; // 94
}

13
test/testcases/naive.data Normal file
View File

@ -0,0 +1,13 @@
@00000000
37 01 02 00 EF 10 00 04 13 05 F0 0F B7 06 03 00
23 82 A6 00 6F F0 9F FF
@00001000
37 17 00 00 83 27 C7 06 33 45 F5 00 13 05 D5 0A
23 26 A7 06 67 80 00 00 83 47 05 00 63 82 07 02
37 17 00 00 83 26 C7 06 B3 C7 D7 00 93 87 97 20
23 26 F7 06 13 05 15 00 83 47 05 00 E3 94 07 FE
67 80 00 00 13 01 01 FF 23 26 11 00 13 05 10 0B
EF F0 1F FB B7 17 00 00 03 A5 C7 06 83 20 C1 00
13 01 01 01 67 80 00 00
@00001068
FD 00 00 00

70
test/testcases/naive.dump Normal file
View File

@ -0,0 +1,70 @@
./test/test.om: file format elf32-littleriscv
Disassembly of section .rom:
00000000 <.rom>:
0: 00020137 lui sp,0x20
4: 040010ef jal ra,1044 <main>
8: 0ff00513 li a0,255
c: 000306b7 lui a3,0x30
10: 00a68223 sb a0,4(a3) # 30004 <__heap_start+0x2e004>
14: ff9ff06f j c <printInt-0xff4>
Disassembly of section .text:
00001000 <printInt>:
1000: 00001737 lui a4,0x1
1004: 06c72783 lw a5,108(a4) # 106c <__bss_end>
1008: 00f54533 xor a0,a0,a5
100c: 0ad50513 addi a0,a0,173
1010: 06a72623 sw a0,108(a4)
1014: 00008067 ret
00001018 <printStr>:
1018: 00054783 lbu a5,0(a0)
101c: 02078263 beqz a5,1040 <printStr+0x28>
1020: 00001737 lui a4,0x1
1024: 06c72683 lw a3,108(a4) # 106c <__bss_end>
1028: 00d7c7b3 xor a5,a5,a3
102c: 20978793 addi a5,a5,521
1030: 06f72623 sw a5,108(a4)
1034: 00150513 addi a0,a0,1
1038: 00054783 lbu a5,0(a0)
103c: fe0794e3 bnez a5,1024 <printStr+0xc>
1040: 00008067 ret
00001044 <main>:
1044: ff010113 addi sp,sp,-16 # 1fff0 <__heap_start+0x1dff0>
1048: 00112623 sw ra,12(sp)
104c: 0b100513 li a0,177
1050: fb1ff0ef jal ra,1000 <printInt>
1054: 000017b7 lui a5,0x1
1058: 06c7a503 lw a0,108(a5) # 106c <__bss_end>
105c: 00c12083 lw ra,12(sp)
1060: 01010113 addi sp,sp,16
1064: 00008067 ret
Disassembly of section .srodata:
00001068 <Mod>:
1068: 00fd addi ra,ra,31
...
Disassembly of section .sbss:
0000106c <judgeResult>:
106c: 0000 unimp
...
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 fmsub.d ft6,ft6,ft4,ft7,rmm
4: 2820 fld fs0,80(s0)
6: 29554e47 fmsub.s ft8,fa0,fs5,ft5,rmm
a: 3820 fld fs0,112(s0)
c: 332e fld ft6,232(sp)
e: 302e fld ft0,232(sp)
...

33
test/testcases/pi.c Normal file
View File

@ -0,0 +1,33 @@
#include "io.inc"
int f[2801];
int main() {
int a = 10000;
int b = 0;
int c = 2800;
int d = 0;
int e = 0;
int g = 0;
for (; b - c != 0;)
f[b++] = a / 5;
for (;; e = d % a) {
d = 0;
g = c * 2;
if (g == 0)
break;
for (b = c;; d = d * b) {
d = d + f[b] * a;
f[b] = d % --g;
d = d / g--;
if (--b == 0)
break;
}
c = c - 14;
printInt(e + d / a);
}
printStr("\n");
return judgeResult % Mod; // 137
}

52
test/testcases/pi.data Normal file
View File

@ -0,0 +1,52 @@
@00000000
37 01 02 00 EF 10 00 04 13 05 F0 0F B7 06 03 00
23 82 A6 00 6F F0 9F FF
@00001000
37 47 00 00 83 27 C7 E8 33 45 F5 00 13 05 D5 0A
23 26 A7 E8 67 80 00 00 83 47 05 00 63 82 07 02
37 47 00 00 83 26 C7 E8 B3 C7 D7 00 93 87 97 20
23 26 F7 E8 13 05 15 00 83 47 05 00 E3 94 07 FE
67 80 00 00 13 01 01 FD 23 26 11 02 23 24 81 02
23 22 91 02 23 20 21 03 23 2E 31 01 23 2C 41 01
23 2A 51 01 23 28 61 01 23 26 71 01 23 24 81 01
23 22 91 01 B7 17 00 00 93 87 87 2C 37 37 00 00
13 07 07 BC 33 87 E7 00 93 06 00 7D 23 A0 D7 00
93 87 47 00 E3 9C E7 FE B7 4A 00 00 93 8A 4A E8
37 1A 00 00 13 0B FA AE 13 0A FA 5D 13 0C 00 00
B7 2B 00 00 93 8B 0B 71 93 0C F0 FF 83 A7 4A 00
13 94 27 00 33 04 F4 00 13 14 34 00 33 04 F4 40
13 14 44 00 33 04 F4 00 13 14 44 00 93 05 0A 00
13 05 04 00 EF 00 C0 1A 23 A2 AA 00 93 05 0A 00
13 05 04 00 EF 00 80 11 13 04 05 00 93 09 0B 00
13 09 EA FF 93 84 0A 00 93 85 09 00 13 05 04 00
EF 00 80 0D 83 A7 04 00 13 94 27 00 33 04 F4 00
13 14 34 00 33 04 F4 40 13 14 44 00 33 04 F4 00
13 14 44 00 33 04 A4 00 93 05 09 00 13 05 04 00
EF 00 00 15 23 A0 A4 00 93 05 09 00 13 05 04 00
EF 00 C0 0B 13 04 05 00 93 89 F9 FF 93 84 C4 FF
13 09 E9 FF E3 92 09 FA 93 85 0B 00 EF 00 00 0A
33 05 85 01 EF F0 DF E8 93 85 0B 00 13 05 04 00
EF 00 00 11 13 0C 05 00 13 0A 4A FE 13 0B 2B FF
93 8A 8A FC E3 14 9A F3 37 15 00 00 13 05 05 2C
EF F0 9F E7 93 05 D0 0F B7 47 00 00 03 A5 C7 E8
EF 00 00 0E 83 20 C1 02 03 24 81 02 83 24 41 02
03 29 01 02 83 29 C1 01 03 2A 81 01 83 2A 41 01
03 2B 01 01 83 2B C1 00 03 2C 81 00 83 2C 41 00
13 01 01 03 67 80 00 00 13 06 05 00 13 05 00 00
93 F6 15 00 63 84 06 00 33 05 C5 00 93 D5 15 00
13 16 16 00 E3 96 05 FE 67 80 00 00 63 40 05 06
63 C6 05 06 13 86 05 00 93 05 05 00 13 05 F0 FF
63 0C 06 02 93 06 10 00 63 7A B6 00 63 58 C0 00
13 16 16 00 93 96 16 00 E3 6A B6 FE 13 05 00 00
63 E6 C5 00 B3 85 C5 40 33 65 D5 00 93 D6 16 00
13 56 16 00 E3 96 06 FE 67 80 00 00 93 82 00 00
EF F0 5F FB 13 85 05 00 67 80 02 00 33 05 A0 40
63 D8 05 00 B3 05 B0 40 6F F0 DF F9 B3 05 B0 40
93 82 00 00 EF F0 1F F9 33 05 A0 40 67 80 02 00
93 82 00 00 63 CA 05 00 63 4C 05 00 EF F0 9F F7
13 85 05 00 67 80 02 00 B3 05 B0 40 E3 58 05 FE
33 05 A0 40 EF F0 1F F6 33 05 B0 40 67 80 02 00
@000012C0
0A 00 00 00
@000012C4
FD 00 00 00

594
test/testcases/pi.dump Normal file
View File

@ -0,0 +1,594 @@
./test/test.om: file format elf32-littleriscv
Disassembly of section .rom:
00000000 <.rom>:
0: 00020137 lui sp,0x20
4: 040010ef jal ra,1044 <main>
8: 0ff00513 li a0,255
c: 000306b7 lui a3,0x30
10: 00a68223 sb a0,4(a3) # 30004 <__heap_start+0x2c004>
14: ff9ff06f j c <printInt-0xff4>
Disassembly of section .text:
00001000 <printInt>:
1000: 00004737 lui a4,0x4
1004: e8c72783 lw a5,-372(a4) # 3e8c <__bss_end>
1008: 00f54533 xor a0,a0,a5
100c: 0ad50513 addi a0,a0,173
1010: e8a72623 sw a0,-372(a4)
1014: 00008067 ret
00001018 <printStr>:
1018: 00054783 lbu a5,0(a0)
101c: 02078263 beqz a5,1040 <printStr+0x28>
1020: 00004737 lui a4,0x4
1024: e8c72683 lw a3,-372(a4) # 3e8c <__bss_end>
1028: 00d7c7b3 xor a5,a5,a3
102c: 20978793 addi a5,a5,521
1030: e8f72623 sw a5,-372(a4)
1034: 00150513 addi a0,a0,1
1038: 00054783 lbu a5,0(a0)
103c: fe0794e3 bnez a5,1024 <printStr+0xc>
1040: 00008067 ret
00001044 <main>:
1044: fd010113 addi sp,sp,-48 # 1ffd0 <__heap_start+0x1bfd0>
1048: 02112623 sw ra,44(sp)
104c: 02812423 sw s0,40(sp)
1050: 02912223 sw s1,36(sp)
1054: 03212023 sw s2,32(sp)
1058: 01312e23 sw s3,28(sp)
105c: 01412c23 sw s4,24(sp)
1060: 01512a23 sw s5,20(sp)
1064: 01612823 sw s6,16(sp)
1068: 01712623 sw s7,12(sp)
106c: 01812423 sw s8,8(sp)
1070: 01912223 sw s9,4(sp)
1074: 000017b7 lui a5,0x1
1078: 2c878793 addi a5,a5,712 # 12c8 <__bss_start>
107c: 00003737 lui a4,0x3
1080: bc070713 addi a4,a4,-1088 # 2bc0 <__bss_start+0x18f8>
1084: 00e78733 add a4,a5,a4
1088: 7d000693 li a3,2000
108c: 00d7a023 sw a3,0(a5)
1090: 00478793 addi a5,a5,4
1094: fee79ce3 bne a5,a4,108c <main+0x48>
1098: 00004ab7 lui s5,0x4
109c: e84a8a93 addi s5,s5,-380 # 3e84 <__bss_start+0x2bbc>
10a0: 00001a37 lui s4,0x1
10a4: aefa0b13 addi s6,s4,-1297 # aef <printInt-0x511>
10a8: 5dfa0a13 addi s4,s4,1503
10ac: 00000c13 li s8,0
10b0: 00002bb7 lui s7,0x2
10b4: 710b8b93 addi s7,s7,1808 # 2710 <__bss_start+0x1448>
10b8: fff00c93 li s9,-1
10bc: 004aa783 lw a5,4(s5)
10c0: 00279413 slli s0,a5,0x2
10c4: 00f40433 add s0,s0,a5
10c8: 00341413 slli s0,s0,0x3
10cc: 40f40433 sub s0,s0,a5
10d0: 00441413 slli s0,s0,0x4
10d4: 00f40433 add s0,s0,a5
10d8: 00441413 slli s0,s0,0x4
10dc: 000a0593 mv a1,s4
10e0: 00040513 mv a0,s0
10e4: 1ac000ef jal ra,1290 <__modsi3>
10e8: 00aaa223 sw a0,4(s5)
10ec: 000a0593 mv a1,s4
10f0: 00040513 mv a0,s0
10f4: 118000ef jal ra,120c <__divsi3>
10f8: 00050413 mv s0,a0
10fc: 000b0993 mv s3,s6
1100: ffea0913 addi s2,s4,-2
1104: 000a8493 mv s1,s5
1108: 00098593 mv a1,s3
110c: 00040513 mv a0,s0
1110: 0d8000ef jal ra,11e8 <__mulsi3>
1114: 0004a783 lw a5,0(s1)
1118: 00279413 slli s0,a5,0x2
111c: 00f40433 add s0,s0,a5
1120: 00341413 slli s0,s0,0x3
1124: 40f40433 sub s0,s0,a5
1128: 00441413 slli s0,s0,0x4
112c: 00f40433 add s0,s0,a5
1130: 00441413 slli s0,s0,0x4
1134: 00a40433 add s0,s0,a0
1138: 00090593 mv a1,s2
113c: 00040513 mv a0,s0
1140: 150000ef jal ra,1290 <__modsi3>
1144: 00a4a023 sw a0,0(s1)
1148: 00090593 mv a1,s2
114c: 00040513 mv a0,s0
1150: 0bc000ef jal ra,120c <__divsi3>
1154: 00050413 mv s0,a0
1158: fff98993 addi s3,s3,-1
115c: ffc48493 addi s1,s1,-4
1160: ffe90913 addi s2,s2,-2
1164: fa0992e3 bnez s3,1108 <main+0xc4>
1168: 000b8593 mv a1,s7
116c: 0a0000ef jal ra,120c <__divsi3>
1170: 01850533 add a0,a0,s8
1174: e8dff0ef jal ra,1000 <printInt>
1178: 000b8593 mv a1,s7
117c: 00040513 mv a0,s0
1180: 110000ef jal ra,1290 <__modsi3>
1184: 00050c13 mv s8,a0
1188: fe4a0a13 addi s4,s4,-28
118c: ff2b0b13 addi s6,s6,-14
1190: fc8a8a93 addi s5,s5,-56
1194: f39a14e3 bne s4,s9,10bc <main+0x78>
1198: 00001537 lui a0,0x1
119c: 2c050513 addi a0,a0,704 # 12c0 <__modsi3+0x30>
11a0: e79ff0ef jal ra,1018 <printStr>
11a4: 0fd00593 li a1,253
11a8: 000047b7 lui a5,0x4
11ac: e8c7a503 lw a0,-372(a5) # 3e8c <__bss_end>
11b0: 0e0000ef jal ra,1290 <__modsi3>
11b4: 02c12083 lw ra,44(sp)
11b8: 02812403 lw s0,40(sp)
11bc: 02412483 lw s1,36(sp)
11c0: 02012903 lw s2,32(sp)
11c4: 01c12983 lw s3,28(sp)
11c8: 01812a03 lw s4,24(sp)
11cc: 01412a83 lw s5,20(sp)
11d0: 01012b03 lw s6,16(sp)
11d4: 00c12b83 lw s7,12(sp)
11d8: 00812c03 lw s8,8(sp)
11dc: 00412c83 lw s9,4(sp)
11e0: 03010113 addi sp,sp,48
11e4: 00008067 ret
000011e8 <__mulsi3>:
11e8: 00050613 mv a2,a0
11ec: 00000513 li a0,0
11f0: 0015f693 andi a3,a1,1
11f4: 00068463 beqz a3,11fc <__mulsi3+0x14>
11f8: 00c50533 add a0,a0,a2
11fc: 0015d593 srli a1,a1,0x1
1200: 00161613 slli a2,a2,0x1
1204: fe0596e3 bnez a1,11f0 <__mulsi3+0x8>
1208: 00008067 ret
0000120c <__divsi3>:
120c: 06054063 bltz a0,126c <__umodsi3+0x10>
1210: 0605c663 bltz a1,127c <__umodsi3+0x20>
00001214 <__udivsi3>:
1214: 00058613 mv a2,a1
1218: 00050593 mv a1,a0
121c: fff00513 li a0,-1
1220: 02060c63 beqz a2,1258 <__udivsi3+0x44>
1224: 00100693 li a3,1
1228: 00b67a63 bgeu a2,a1,123c <__udivsi3+0x28>
122c: 00c05863 blez a2,123c <__udivsi3+0x28>
1230: 00161613 slli a2,a2,0x1
1234: 00169693 slli a3,a3,0x1
1238: feb66ae3 bltu a2,a1,122c <__udivsi3+0x18>
123c: 00000513 li a0,0
1240: 00c5e663 bltu a1,a2,124c <__udivsi3+0x38>
1244: 40c585b3 sub a1,a1,a2
1248: 00d56533 or a0,a0,a3
124c: 0016d693 srli a3,a3,0x1
1250: 00165613 srli a2,a2,0x1
1254: fe0696e3 bnez a3,1240 <__udivsi3+0x2c>
1258: 00008067 ret
0000125c <__umodsi3>:
125c: 00008293 mv t0,ra
1260: fb5ff0ef jal ra,1214 <__udivsi3>
1264: 00058513 mv a0,a1
1268: 00028067 jr t0
126c: 40a00533 neg a0,a0
1270: 0005d863 bgez a1,1280 <__umodsi3+0x24>
1274: 40b005b3 neg a1,a1
1278: f9dff06f j 1214 <__udivsi3>
127c: 40b005b3 neg a1,a1
1280: 00008293 mv t0,ra
1284: f91ff0ef jal ra,1214 <__udivsi3>
1288: 40a00533 neg a0,a0
128c: 00028067 jr t0
00001290 <__modsi3>:
1290: 00008293 mv t0,ra
1294: 0005ca63 bltz a1,12a8 <__modsi3+0x18>
1298: 00054c63 bltz a0,12b0 <__modsi3+0x20>
129c: f79ff0ef jal ra,1214 <__udivsi3>
12a0: 00058513 mv a0,a1
12a4: 00028067 jr t0
12a8: 40b005b3 neg a1,a1
12ac: fe0558e3 bgez a0,129c <__modsi3+0xc>
12b0: 40a00533 neg a0,a0
12b4: f61ff0ef jal ra,1214 <__udivsi3>
12b8: 40b00533 neg a0,a1
12bc: 00028067 jr t0
Disassembly of section .rodata.str1.4:
000012c0 <.rodata.str1.4>:
12c0: 000a c.slli zero,0x2
...
Disassembly of section .srodata:
000012c4 <Mod>:
12c4: 00fd addi ra,ra,31
...
Disassembly of section .bss:
000012c8 <f>:
...
Disassembly of section .sbss:
00003e8c <judgeResult>:
3e8c: 0000 unimp
...
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 fmsub.d ft6,ft6,ft4,ft7,rmm
4: 2820 fld fs0,80(s0)
6: 29554e47 fmsub.s ft8,fa0,fs5,ft5,rmm
a: 3820 fld fs0,112(s0)
c: 332e fld ft6,232(sp)
e: 302e fld ft0,232(sp)
...
Disassembly of section .debug_line:
00000000 <.debug_line>:
0: 008e slli ra,ra,0x3
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0048 addi a0,sp,4
8: 0000 unimp
a: 0101 addi sp,sp,0
c: 000d0efb 0xd0efb
10: 0101 addi sp,sp,0
12: 0101 addi sp,sp,0
14: 0000 unimp
16: 0100 addi s0,sp,128
18: 0000 unimp
1a: 2e01 jal 32a <printInt-0xcd6>
1c: 2f2e fld ft10,200(sp)
1e: 2e2e fld ft8,200(sp)
20: 2f2e2e2f 0x2f2e2e2f
24: 2f2e fld ft10,200(sp)
26: 6972 flw fs2,28(sp)
28: 2d766373 csrrsi t1,0x2d7,12
2c: 2f636367 0x2f636367
30: 696c flw fa1,84(a0)
32: 6762 flw fa4,24(sp)
34: 632f6363 bltu t5,s2,65a <printInt-0x9a6>
38: 69666e6f jal t3,666ce <__heap_start+0x626ce>
3c: 69722f67 0x69722f67
40: 00766373 csrrsi t1,0x7,12
44: 6d00 flw fs0,24(a0)
46: 6c75 lui s8,0x1d
48: 6964 flw fs1,84(a0)
4a: 00532e33 slt t3,t1,t0
4e: 0001 nop
50: 0000 unimp
52: 0500 addi s0,sp,640
54: e802 fsw ft0,16(sp)
56: 0011 c.nop 4
58: 0300 addi s0,sp,384
5a: 0124 addi s1,sp,136
5c: 04090103 lb sp,64(s2)
60: 0100 addi s0,sp,128
62: 04090203 lb tp,64(s2)
66: 0100 addi s0,sp,128
68: 04090103 lb sp,64(s2)
6c: 0100 addi s0,sp,128
6e: 04090103 lb sp,64(s2)
72: 0100 addi s0,sp,128
74: 04090203 lb tp,64(s2)
78: 0100 addi s0,sp,128
7a: 04090103 lb sp,64(s2)
7e: 0100 addi s0,sp,128
80: 04090103 lb sp,64(s2)
84: 0100 addi s0,sp,128
86: 04090103 lb sp,64(s2)
8a: 0100 addi s0,sp,128
8c: 0409 addi s0,s0,2
8e: 0000 unimp
90: 0101 addi sp,sp,0
92: 0164 addi s1,sp,140
94: 0000 unimp
96: 0002 c.slli64 zero
98: 0045 c.nop 17
9a: 0000 unimp
9c: 0101 addi sp,sp,0
9e: 000d0efb 0xd0efb
a2: 0101 addi sp,sp,0
a4: 0101 addi sp,sp,0
a6: 0000 unimp
a8: 0100 addi s0,sp,128
aa: 0000 unimp
ac: 2e01 jal 3bc <printInt-0xc44>
ae: 2f2e fld ft10,200(sp)
b0: 2e2e fld ft8,200(sp)
b2: 2f2e2e2f 0x2f2e2e2f
b6: 2f2e fld ft10,200(sp)
b8: 6972 flw fs2,28(sp)
ba: 2d766373 csrrsi t1,0x2d7,12
be: 2f636367 0x2f636367
c2: 696c flw fa1,84(a0)
c4: 6762 flw fa4,24(sp)
c6: 632f6363 bltu t5,s2,6ec <printInt-0x914>
ca: 69666e6f jal t3,66760 <__heap_start+0x62760>
ce: 69722f67 0x69722f67
d2: 00766373 csrrsi t1,0x7,12
d6: 6400 flw fs0,8(s0)
d8: 7669 lui a2,0xffffa
da: 532e lw t1,232(sp)
dc: 0100 addi s0,sp,128
de: 0000 unimp
e0: 0000 unimp
e2: 0205 addi tp,tp,1
e4: 120c addi a1,sp,288
e6: 0000 unimp
e8: 0100c403 lbu s0,16(ra)
ec: 04090103 lb sp,64(s2)
f0: 0100 addi s0,sp,128
f2: 04090403 lb s0,64(s2)
f6: 0100 addi s0,sp,128
f8: 04090103 lb sp,64(s2)
fc: 0100 addi s0,sp,128
fe: 04090103 lb sp,64(s2)
102: 0100 addi s0,sp,128
104: 04090103 lb sp,64(s2)
108: 0100 addi s0,sp,128
10a: 04090103 lb sp,64(s2)
10e: 0100 addi s0,sp,128
110: 04090103 lb sp,64(s2)
114: 0100 addi s0,sp,128
116: 04090203 lb tp,64(s2)
11a: 0100 addi s0,sp,128
11c: 04090103 lb sp,64(s2)
120: 0100 addi s0,sp,128
122: 04090103 lb sp,64(s2)
126: 0100 addi s0,sp,128
128: 04090103 lb sp,64(s2)
12c: 0100 addi s0,sp,128
12e: 04090203 lb tp,64(s2)
132: 0100 addi s0,sp,128
134: 04090203 lb tp,64(s2)
138: 0100 addi s0,sp,128
13a: 04090103 lb sp,64(s2)
13e: 0100 addi s0,sp,128
140: 04090103 lb sp,64(s2)
144: 0100 addi s0,sp,128
146: 04090203 lb tp,64(s2)
14a: 0100 addi s0,sp,128
14c: 04090103 lb sp,64(s2)
150: 0100 addi s0,sp,128
152: 04090103 lb sp,64(s2)
156: 0100 addi s0,sp,128
158: 04090203 lb tp,64(s2)
15c: 0100 addi s0,sp,128
15e: 04090503 lb a0,64(s2)
162: 0100 addi s0,sp,128
164: 04090103 lb sp,64(s2)
168: 0100 addi s0,sp,128
16a: 04090103 lb sp,64(s2)
16e: 0100 addi s0,sp,128
170: 04090103 lb sp,64(s2)
174: 0100 addi s0,sp,128
176: 04090503 lb a0,64(s2)
17a: 0100 addi s0,sp,128
17c: 04090103 lb sp,64(s2)
180: 0100 addi s0,sp,128
182: 04090103 lb sp,64(s2)
186: 0100 addi s0,sp,128
188: 04090103 lb sp,64(s2)
18c: 0100 addi s0,sp,128
18e: 04090203 lb tp,64(s2)
192: 0100 addi s0,sp,128
194: 04090203 lb tp,64(s2)
198: 0100 addi s0,sp,128
19a: 04090103 lb sp,64(s2)
19e: 0100 addi s0,sp,128
1a0: 04090103 lb sp,64(s2)
1a4: 0100 addi s0,sp,128
1a6: 04090103 lb sp,64(s2)
1aa: 0100 addi s0,sp,128
1ac: 04090403 lb s0,64(s2)
1b0: 0100 addi s0,sp,128
1b2: 04090103 lb sp,64(s2)
1b6: 0100 addi s0,sp,128
1b8: 04090103 lb sp,64(s2)
1bc: 0100 addi s0,sp,128
1be: 04090203 lb tp,64(s2)
1c2: 0100 addi s0,sp,128
1c4: 04090103 lb sp,64(s2)
1c8: 0100 addi s0,sp,128
1ca: 04090103 lb sp,64(s2)
1ce: 0100 addi s0,sp,128
1d0: 04090203 lb tp,64(s2)
1d4: 0100 addi s0,sp,128
1d6: 04090103 lb sp,64(s2)
1da: 0100 addi s0,sp,128
1dc: 04090203 lb tp,64(s2)
1e0: 0100 addi s0,sp,128
1e2: 04090103 lb sp,64(s2)
1e6: 0100 addi s0,sp,128
1e8: 04090103 lb sp,64(s2)
1ec: 0100 addi s0,sp,128
1ee: 04090103 lb sp,64(s2)
1f2: 0100 addi s0,sp,128
1f4: 0409 addi s0,s0,2
1f6: 0000 unimp
1f8: 0101 addi sp,sp,0
Disassembly of section .debug_info:
00000000 <.debug_info>:
0: 0022 c.slli zero,0x8
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0104 addi s1,sp,128
c: 0000 unimp
e: 0000 unimp
10: 11e8 addi a0,sp,236
12: 0000 unimp
14: 120c addi a1,sp,288
16: 0000 unimp
18: 0000 unimp
1a: 0000 unimp
1c: 0032 c.slli zero,0xc
1e: 0000 unimp
20: 0000008b 0x8b
24: 8001 c.srli64 s0
26: 0022 c.slli zero,0x8
28: 0000 unimp
2a: 0002 c.slli64 zero
2c: 0014 0x14
2e: 0000 unimp
30: 0104 addi s1,sp,128
32: 0092 slli ra,ra,0x4
34: 0000 unimp
36: 120c addi a1,sp,288
38: 0000 unimp
3a: 12c0 addi s0,sp,356
3c: 0000 unimp
3e: 0099 addi ra,ra,6
40: 0000 unimp
42: 0032 c.slli zero,0xc
44: 0000 unimp
46: 0000008b 0x8b
4a: 8001 c.srli64 s0
Disassembly of section .debug_abbrev:
00000000 <.debug_abbrev>:
0: 1101 addi sp,sp,-32
2: 1000 addi s0,sp,32
4: 1106 slli sp,sp,0x21
6: 1201 addi tp,tp,-32
8: 0301 addi t1,t1,0
a: 1b0e slli s6,s6,0x23
c: 250e fld fa0,192(sp)
e: 130e slli t1,t1,0x23
10: 0005 c.nop 1
12: 0000 unimp
14: 1101 addi sp,sp,-32
16: 1000 addi s0,sp,32
18: 1106 slli sp,sp,0x21
1a: 1201 addi tp,tp,-32
1c: 0301 addi t1,t1,0
1e: 1b0e slli s6,s6,0x23
20: 250e fld fa0,192(sp)
22: 130e slli t1,t1,0x23
24: 0005 c.nop 1
...
Disassembly of section .debug_aranges:
00000000 <.debug_aranges>:
0: 001c 0x1c
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0004 0x4
c: 0000 unimp
e: 0000 unimp
10: 11e8 addi a0,sp,236
12: 0000 unimp
14: 0024 addi s1,sp,8
...
1e: 0000 unimp
20: 001c 0x1c
22: 0000 unimp
24: 0002 c.slli64 zero
26: 0026 c.slli zero,0x9
28: 0000 unimp
2a: 0004 0x4
2c: 0000 unimp
2e: 0000 unimp
30: 120c addi a1,sp,288
32: 0000 unimp
34: 00b4 addi a3,sp,72
...
Disassembly of section .debug_str:
00000000 <.debug_str>:
0: 2e2e fld ft8,200(sp)
2: 2f2e2e2f 0x2f2e2e2f
6: 2e2e fld ft8,200(sp)
8: 722f2e2f 0x722f2e2f
c: 7369 lui t1,0xffffa
e: 672d7663 bgeu s10,s2,67a <printInt-0x986>
12: 6c2f6363 bltu t5,sp,6d8 <printInt-0x928>
16: 6269 lui tp,0x1a
18: 2f636367 0x2f636367
1c: 666e6f63 bltu t3,t1,69a <printInt-0x966>
20: 6769 lui a4,0x1a
22: 7369722f 0x7369722f
26: 6d2f7663 bgeu t5,s2,6f2 <printInt-0x90e>
2a: 6c75 lui s8,0x1d
2c: 6964 flw fs1,84(a0)
2e: 00532e33 slt t3,t1,t0
32: 6d6f682f 0x6d6f682f
36: 2f65 jal 7ee <printInt-0x812>
38: 712d7577 0x712d7577
3c: 6e69 lui t3,0x1a
3e: 35312d67 0x35312d67
42: 69722f37 lui t5,0x69722
46: 2d766373 csrrsi t1,0x2d7,12
4a: 2d756e67 0x2d756e67
4e: 6f74 flw fa3,92(a4)
50: 68636c6f jal s8,366d6 <__heap_start+0x326d6>
54: 6961 lui s2,0x18
56: 2f6e fld ft10,216(sp)
58: 7562 flw fa0,56(sp)
5a: 6c69 lui s8,0x1a
5c: 2d64 fld fs1,216(a0)
5e: 2d636367 0x2d636367
62: 656e flw fa0,216(sp)
64: 62696c77 0x62696c77
68: 732d lui t1,0xfffeb
6a: 6174 flw fa3,68(a0)
6c: 2f326567 0x2f326567
70: 6972 flw fs2,28(sp)
72: 33766373 csrrsi t1,mhpmevent23,12
76: 2d32 fld fs10,264(sp)
78: 6e75 lui t3,0x1d
7a: 776f6e6b 0x776f6e6b
7e: 2d6e fld fs10,216(sp)
80: 6c65 lui s8,0x19
82: 2f66 fld ft10,88(sp)
84: 696c flw fa1,84(a0)
86: 6762 flw fa4,24(sp)
88: 47006363 bltu zero,a6,4ee <printInt-0xb12>
8c: 554e lw a0,240(sp)
8e: 4120 lw s0,64(a0)
90: 2e322053 0x2e322053
94: 312e3133 0x312e3133
98: 2e00 fld fs0,24(a2)
9a: 2f2e fld ft10,200(sp)
9c: 2e2e fld ft8,200(sp)
9e: 2f2e2e2f 0x2f2e2e2f
a2: 2f2e fld ft10,200(sp)
a4: 6972 flw fs2,28(sp)
a6: 2d766373 csrrsi t1,0x2d7,12
aa: 2f636367 0x2f636367
ae: 696c flw fa1,84(a0)
b0: 6762 flw fa4,24(sp)
b2: 632f6363 bltu t5,s2,6d8 <printInt-0x928>
b6: 69666e6f jal t3,6674c <__heap_start+0x6274c>
ba: 69722f67 0x69722f67
be: 2f766373 csrrsi t1,0x2f7,12
c2: 6964 flw fs1,84(a0)
c4: 2e76 fld ft8,344(sp)
c6: fadd.s ft0,ft0,ft0,rne

44
test/testcases/qsort.c Normal file
View File

@ -0,0 +1,44 @@
#include "io.inc"
// Target: qsort
// Possible optimization: Dead code elimination, common expression, strength
// reduction REMARKS: nothing.
int a[10100];
int n = 10000;
int qsrt(int l, int r) {
int i = l;
int j = r;
int x = a[(l + r) / 2];
while (i <= j) {
while (a[i] < x)
i++;
while (a[j] > x)
j--;
if (i <= j) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
i++;
j--;
}
}
if (l < j)
qsrt(l, j);
if (i < r)
qsrt(i, r);
return 0;
}
int main() {
int i;
for (i = 1; i <= n; i++)
a[i] = n + 1 - i;
qsrt(1, n);
for (i = 1; i <= n; i++) {
printInt(a[i]);
printStr(" ");
}
printStr("\n");
return judgeResult % Mod; // 105
}

55
test/testcases/qsort.data Normal file
View File

@ -0,0 +1,55 @@
@00000000
37 01 02 00 EF 10 80 15 13 05 F0 0F B7 06 03 00
23 82 A6 00 6F F0 9F FF
@00001000
37 B7 00 00 83 27 07 0B 33 45 F5 00 13 05 D5 0A
23 28 A7 0A 67 80 00 00 83 47 05 00 63 82 07 02
37 B7 00 00 83 26 07 0B B3 C7 D7 00 93 87 97 20
23 28 F7 0A 13 05 15 00 83 47 05 00 E3 94 07 FE
67 80 00 00 13 01 01 FF 23 26 11 00 23 24 81 00
23 22 91 00 93 84 05 00 37 17 00 00 B3 06 B5 00
93 D7 F6 01 B3 87 D7 00 93 D7 17 40 93 97 27 00
13 07 07 2E B3 07 F7 00 83 A6 07 00 13 04 05 00
37 18 00 00 13 08 08 2E B7 08 00 40 93 88 F8 FF
63 C0 85 06 93 17 24 00 B3 07 F8 00 03 A7 07 00
93 07 14 00 93 97 27 00 B3 87 07 01 63 5E D7 06
13 04 14 00 93 87 47 00 03 A7 C7 FF E3 4A D7 FE
93 97 25 00 B3 07 F8 00 03 A6 07 00 63 D0 C6 02
B3 87 15 01 93 97 27 00 B3 87 07 01 93 85 F5 FF
93 87 C7 FF 03 A6 47 00 E3 CA C6 FE 63 D6 85 04
63 40 B5 02 63 42 94 02 13 05 00 00 83 20 C1 00
03 24 81 00 83 24 41 00 13 01 01 01 67 80 00 00
EF F0 5F F3 6F F0 1F FE 93 85 04 00 13 05 04 00
EF F0 5F F2 6F F0 5F FD 93 97 25 00 B3 07 F8 00
03 A6 07 00 E3 CE C6 F8 93 17 24 00 B3 07 F8 00
23 A0 C7 00 93 97 25 00 B3 07 F8 00 23 A0 E7 00
13 04 14 00 93 85 F5 FF 6F F0 9F F3 13 01 01 FE
23 2E 11 00 23 2C 81 00 23 2A 91 00 23 28 21 01
23 26 31 01 B7 17 00 00 83 A5 C7 2D 63 50 B0 02
93 87 05 00 37 17 00 00 13 07 47 2E 23 20 F7 00
93 87 F7 FF 13 07 47 00 E3 9A 07 FE 13 05 10 00
EF F0 5F EA B7 17 00 00 83 A7 C7 2D 63 5C F0 02
37 14 00 00 13 04 44 2E 93 04 10 00 B7 19 00 00
37 19 00 00 03 25 04 00 EF F0 9F E3 13 85 09 2D
EF F0 9F E4 93 84 14 00 13 04 44 00 83 27 C9 2D
E3 D2 97 FE 37 15 00 00 13 05 45 2D EF F0 DF E2
93 05 D0 0F B7 B7 00 00 03 A5 07 0B EF 00 40 0A
83 20 C1 01 03 24 81 01 83 24 41 01 03 29 01 01
83 29 C1 00 13 01 01 02 67 80 00 00 63 40 05 06
63 C6 05 06 13 86 05 00 93 05 05 00 13 05 F0 FF
63 0C 06 02 93 06 10 00 63 7A B6 00 63 58 C0 00
13 16 16 00 93 96 16 00 E3 6A B6 FE 13 05 00 00
63 E6 C5 00 B3 85 C5 40 33 65 D5 00 93 D6 16 00
13 56 16 00 E3 96 06 FE 67 80 00 00 93 82 00 00
EF F0 5F FB 13 85 05 00 67 80 02 00 33 05 A0 40
63 D8 05 00 B3 05 B0 40 6F F0 DF F9 B3 05 B0 40
93 82 00 00 EF F0 1F F9 33 05 A0 40 67 80 02 00
93 82 00 00 63 CA 05 00 63 4C 05 00 EF F0 9F F7
13 85 05 00 67 80 02 00 B3 05 B0 40 E3 58 05 FE
33 05 A0 40 EF F0 1F F6 33 05 B0 40 67 80 02 00
@000012D0
20 00 00 00 0A 00 00 00
@000012D8
FD 00 00 00
@000012DC
10 27 00 00

494
test/testcases/qsort.dump Normal file
View File

@ -0,0 +1,494 @@
./test/test.om: file format elf32-littleriscv
Disassembly of section .rom:
00000000 <.rom>:
0: 00020137 lui sp,0x20
4: 158010ef jal ra,115c <main>
8: 0ff00513 li a0,255
c: 000306b7 lui a3,0x30
10: 00a68223 sb a0,4(a3) # 30004 <__heap_start+0x24004>
14: ff9ff06f j c <printInt-0xff4>
Disassembly of section .text:
00001000 <printInt>:
1000: 0000b737 lui a4,0xb
1004: 0b072783 lw a5,176(a4) # b0b0 <__bss_end>
1008: 00f54533 xor a0,a0,a5
100c: 0ad50513 addi a0,a0,173
1010: 0aa72823 sw a0,176(a4)
1014: 00008067 ret
00001018 <printStr>:
1018: 00054783 lbu a5,0(a0)
101c: 02078263 beqz a5,1040 <printStr+0x28>
1020: 0000b737 lui a4,0xb
1024: 0b072683 lw a3,176(a4) # b0b0 <__bss_end>
1028: 00d7c7b3 xor a5,a5,a3
102c: 20978793 addi a5,a5,521
1030: 0af72823 sw a5,176(a4)
1034: 00150513 addi a0,a0,1
1038: 00054783 lbu a5,0(a0)
103c: fe0794e3 bnez a5,1024 <printStr+0xc>
1040: 00008067 ret
00001044 <qsrt>:
1044: ff010113 addi sp,sp,-16 # 1fff0 <__heap_start+0x13ff0>
1048: 00112623 sw ra,12(sp)
104c: 00812423 sw s0,8(sp)
1050: 00912223 sw s1,4(sp)
1054: 00058493 mv s1,a1
1058: 00001737 lui a4,0x1
105c: 00b506b3 add a3,a0,a1
1060: 01f6d793 srli a5,a3,0x1f
1064: 00d787b3 add a5,a5,a3
1068: 4017d793 srai a5,a5,0x1
106c: 00279793 slli a5,a5,0x2
1070: 2e070713 addi a4,a4,736 # 12e0 <a>
1074: 00f707b3 add a5,a4,a5
1078: 0007a683 lw a3,0(a5)
107c: 00050413 mv s0,a0
1080: 00001837 lui a6,0x1
1084: 2e080813 addi a6,a6,736 # 12e0 <a>
1088: 400008b7 lui a7,0x40000
108c: fff88893 addi a7,a7,-1 # 3fffffff <__heap_start+0x3fff3fff>
1090: 0685c063 blt a1,s0,10f0 <qsrt+0xac>
1094: 00241793 slli a5,s0,0x2
1098: 00f807b3 add a5,a6,a5
109c: 0007a703 lw a4,0(a5)
10a0: 00140793 addi a5,s0,1
10a4: 00279793 slli a5,a5,0x2
10a8: 010787b3 add a5,a5,a6
10ac: 06d75e63 bge a4,a3,1128 <qsrt+0xe4>
10b0: 00140413 addi s0,s0,1
10b4: 00478793 addi a5,a5,4
10b8: ffc7a703 lw a4,-4(a5)
10bc: fed74ae3 blt a4,a3,10b0 <qsrt+0x6c>
10c0: 00259793 slli a5,a1,0x2
10c4: 00f807b3 add a5,a6,a5
10c8: 0007a603 lw a2,0(a5)
10cc: 02c6d063 bge a3,a2,10ec <qsrt+0xa8>
10d0: 011587b3 add a5,a1,a7
10d4: 00279793 slli a5,a5,0x2
10d8: 010787b3 add a5,a5,a6
10dc: fff58593 addi a1,a1,-1
10e0: ffc78793 addi a5,a5,-4
10e4: 0047a603 lw a2,4(a5)
10e8: fec6cae3 blt a3,a2,10dc <qsrt+0x98>
10ec: 0485d663 bge a1,s0,1138 <qsrt+0xf4>
10f0: 02b54063 blt a0,a1,1110 <qsrt+0xcc>
10f4: 02944263 blt s0,s1,1118 <qsrt+0xd4>
10f8: 00000513 li a0,0
10fc: 00c12083 lw ra,12(sp)
1100: 00812403 lw s0,8(sp)
1104: 00412483 lw s1,4(sp)
1108: 01010113 addi sp,sp,16
110c: 00008067 ret
1110: f35ff0ef jal ra,1044 <qsrt>
1114: fe1ff06f j 10f4 <qsrt+0xb0>
1118: 00048593 mv a1,s1
111c: 00040513 mv a0,s0
1120: f25ff0ef jal ra,1044 <qsrt>
1124: fd5ff06f j 10f8 <qsrt+0xb4>
1128: 00259793 slli a5,a1,0x2
112c: 00f807b3 add a5,a6,a5
1130: 0007a603 lw a2,0(a5)
1134: f8c6cee3 blt a3,a2,10d0 <qsrt+0x8c>
1138: 00241793 slli a5,s0,0x2
113c: 00f807b3 add a5,a6,a5
1140: 00c7a023 sw a2,0(a5)
1144: 00259793 slli a5,a1,0x2
1148: 00f807b3 add a5,a6,a5
114c: 00e7a023 sw a4,0(a5)
1150: 00140413 addi s0,s0,1
1154: fff58593 addi a1,a1,-1
1158: f39ff06f j 1090 <qsrt+0x4c>
0000115c <main>:
115c: fe010113 addi sp,sp,-32
1160: 00112e23 sw ra,28(sp)
1164: 00812c23 sw s0,24(sp)
1168: 00912a23 sw s1,20(sp)
116c: 01212823 sw s2,16(sp)
1170: 01312623 sw s3,12(sp)
1174: 000017b7 lui a5,0x1
1178: 2dc7a583 lw a1,732(a5) # 12dc <__bss_start>
117c: 02b05063 blez a1,119c <main+0x40>
1180: 00058793 mv a5,a1
1184: 00001737 lui a4,0x1
1188: 2e470713 addi a4,a4,740 # 12e4 <a+0x4>
118c: 00f72023 sw a5,0(a4)
1190: fff78793 addi a5,a5,-1
1194: 00470713 addi a4,a4,4
1198: fe079ae3 bnez a5,118c <main+0x30>
119c: 00100513 li a0,1
11a0: ea5ff0ef jal ra,1044 <qsrt>
11a4: 000017b7 lui a5,0x1
11a8: 2dc7a783 lw a5,732(a5) # 12dc <__bss_start>
11ac: 02f05c63 blez a5,11e4 <main+0x88>
11b0: 00001437 lui s0,0x1
11b4: 2e440413 addi s0,s0,740 # 12e4 <a+0x4>
11b8: 00100493 li s1,1
11bc: 000019b7 lui s3,0x1
11c0: 00001937 lui s2,0x1
11c4: 00042503 lw a0,0(s0)
11c8: e39ff0ef jal ra,1000 <printInt>
11cc: 2d098513 addi a0,s3,720 # 12d0 <__modsi3+0x30>
11d0: e49ff0ef jal ra,1018 <printStr>
11d4: 00148493 addi s1,s1,1
11d8: 00440413 addi s0,s0,4
11dc: 2dc92783 lw a5,732(s2) # 12dc <__bss_start>
11e0: fe97d2e3 bge a5,s1,11c4 <main+0x68>
11e4: 00001537 lui a0,0x1
11e8: 2d450513 addi a0,a0,724 # 12d4 <__modsi3+0x34>
11ec: e2dff0ef jal ra,1018 <printStr>
11f0: 0fd00593 li a1,253
11f4: 0000b7b7 lui a5,0xb
11f8: 0b07a503 lw a0,176(a5) # b0b0 <__bss_end>
11fc: 0a4000ef jal ra,12a0 <__modsi3>
1200: 01c12083 lw ra,28(sp)
1204: 01812403 lw s0,24(sp)
1208: 01412483 lw s1,20(sp)
120c: 01012903 lw s2,16(sp)
1210: 00c12983 lw s3,12(sp)
1214: 02010113 addi sp,sp,32
1218: 00008067 ret
0000121c <__divsi3>:
121c: 06054063 bltz a0,127c <__umodsi3+0x10>
1220: 0605c663 bltz a1,128c <__umodsi3+0x20>
00001224 <__udivsi3>:
1224: 00058613 mv a2,a1
1228: 00050593 mv a1,a0
122c: fff00513 li a0,-1
1230: 02060c63 beqz a2,1268 <__udivsi3+0x44>
1234: 00100693 li a3,1
1238: 00b67a63 bgeu a2,a1,124c <__udivsi3+0x28>
123c: 00c05863 blez a2,124c <__udivsi3+0x28>
1240: 00161613 slli a2,a2,0x1
1244: 00169693 slli a3,a3,0x1
1248: feb66ae3 bltu a2,a1,123c <__udivsi3+0x18>
124c: 00000513 li a0,0
1250: 00c5e663 bltu a1,a2,125c <__udivsi3+0x38>
1254: 40c585b3 sub a1,a1,a2
1258: 00d56533 or a0,a0,a3
125c: 0016d693 srli a3,a3,0x1
1260: 00165613 srli a2,a2,0x1
1264: fe0696e3 bnez a3,1250 <__udivsi3+0x2c>
1268: 00008067 ret
0000126c <__umodsi3>:
126c: 00008293 mv t0,ra
1270: fb5ff0ef jal ra,1224 <__udivsi3>
1274: 00058513 mv a0,a1
1278: 00028067 jr t0
127c: 40a00533 neg a0,a0
1280: 0005d863 bgez a1,1290 <__umodsi3+0x24>
1284: 40b005b3 neg a1,a1
1288: f9dff06f j 1224 <__udivsi3>
128c: 40b005b3 neg a1,a1
1290: 00008293 mv t0,ra
1294: f91ff0ef jal ra,1224 <__udivsi3>
1298: 40a00533 neg a0,a0
129c: 00028067 jr t0
000012a0 <__modsi3>:
12a0: 00008293 mv t0,ra
12a4: 0005ca63 bltz a1,12b8 <__modsi3+0x18>
12a8: 00054c63 bltz a0,12c0 <__modsi3+0x20>
12ac: f79ff0ef jal ra,1224 <__udivsi3>
12b0: 00058513 mv a0,a1
12b4: 00028067 jr t0
12b8: 40b005b3 neg a1,a1
12bc: fe0558e3 bgez a0,12ac <__modsi3+0xc>
12c0: 40a00533 neg a0,a0
12c4: f61ff0ef jal ra,1224 <__udivsi3>
12c8: 40b00533 neg a0,a1
12cc: 00028067 jr t0
Disassembly of section .rodata.str1.4:
000012d0 <.rodata.str1.4>:
12d0: 0020 addi s0,sp,8
12d2: 0000 unimp
12d4: 000a c.slli zero,0x2
...
Disassembly of section .srodata:
000012d8 <Mod>:
12d8: 00fd addi ra,ra,31
...
Disassembly of section .sdata:
000012dc <n>:
12dc: 2710 fld fa2,8(a4)
...
Disassembly of section .bss:
000012e0 <a>:
...
Disassembly of section .sbss:
0000b0b0 <judgeResult>:
b0b0: 0000 unimp
...
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 fmsub.d ft6,ft6,ft4,ft7,rmm
4: 2820 fld fs0,80(s0)
6: 29554e47 fmsub.s ft8,fa0,fs5,ft5,rmm
a: 3820 fld fs0,112(s0)
c: 332e fld ft6,232(sp)
e: 302e fld ft0,232(sp)
...
Disassembly of section .debug_line:
00000000 <.debug_line>:
0: 0164 addi s1,sp,140
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0045 c.nop 17
8: 0000 unimp
a: 0101 addi sp,sp,0
c: 000d0efb 0xd0efb
10: 0101 addi sp,sp,0
12: 0101 addi sp,sp,0
14: 0000 unimp
16: 0100 addi s0,sp,128
18: 0000 unimp
1a: 2e01 jal 32a <printInt-0xcd6>
1c: 2f2e fld ft10,200(sp)
1e: 2e2e fld ft8,200(sp)
20: 2f2e2e2f 0x2f2e2e2f
24: 2f2e fld ft10,200(sp)
26: 6972 flw fs2,28(sp)
28: 2d766373 csrrsi t1,0x2d7,12
2c: 2f636367 0x2f636367
30: 696c flw fa1,84(a0)
32: 6762 flw fa4,24(sp)
34: 632f6363 bltu t5,s2,65a <printInt-0x9a6>
38: 69666e6f jal t3,666ce <__heap_start+0x5a6ce>
3c: 69722f67 0x69722f67
40: 00766373 csrrsi t1,0x7,12
44: 6400 flw fs0,8(s0)
46: 7669 lui a2,0xffffa
48: 532e lw t1,232(sp)
4a: 0100 addi s0,sp,128
4c: 0000 unimp
4e: 0000 unimp
50: 0205 addi tp,tp,1
52: 121c addi a5,sp,288
54: 0000 unimp
56: 0100c403 lbu s0,16(ra)
5a: 04090103 lb sp,64(s2)
5e: 0100 addi s0,sp,128
60: 04090403 lb s0,64(s2)
64: 0100 addi s0,sp,128
66: 04090103 lb sp,64(s2)
6a: 0100 addi s0,sp,128
6c: 04090103 lb sp,64(s2)
70: 0100 addi s0,sp,128
72: 04090103 lb sp,64(s2)
76: 0100 addi s0,sp,128
78: 04090103 lb sp,64(s2)
7c: 0100 addi s0,sp,128
7e: 04090103 lb sp,64(s2)
82: 0100 addi s0,sp,128
84: 04090203 lb tp,64(s2)
88: 0100 addi s0,sp,128
8a: 04090103 lb sp,64(s2)
8e: 0100 addi s0,sp,128
90: 04090103 lb sp,64(s2)
94: 0100 addi s0,sp,128
96: 04090103 lb sp,64(s2)
9a: 0100 addi s0,sp,128
9c: 04090203 lb tp,64(s2)
a0: 0100 addi s0,sp,128
a2: 04090203 lb tp,64(s2)
a6: 0100 addi s0,sp,128
a8: 04090103 lb sp,64(s2)
ac: 0100 addi s0,sp,128
ae: 04090103 lb sp,64(s2)
b2: 0100 addi s0,sp,128
b4: 04090203 lb tp,64(s2)
b8: 0100 addi s0,sp,128
ba: 04090103 lb sp,64(s2)
be: 0100 addi s0,sp,128
c0: 04090103 lb sp,64(s2)
c4: 0100 addi s0,sp,128
c6: 04090203 lb tp,64(s2)
ca: 0100 addi s0,sp,128
cc: 04090503 lb a0,64(s2)
d0: 0100 addi s0,sp,128
d2: 04090103 lb sp,64(s2)
d6: 0100 addi s0,sp,128
d8: 04090103 lb sp,64(s2)
dc: 0100 addi s0,sp,128
de: 04090103 lb sp,64(s2)
e2: 0100 addi s0,sp,128
e4: 04090503 lb a0,64(s2)
e8: 0100 addi s0,sp,128
ea: 04090103 lb sp,64(s2)
ee: 0100 addi s0,sp,128
f0: 04090103 lb sp,64(s2)
f4: 0100 addi s0,sp,128
f6: 04090103 lb sp,64(s2)
fa: 0100 addi s0,sp,128
fc: 04090203 lb tp,64(s2)
100: 0100 addi s0,sp,128
102: 04090203 lb tp,64(s2)
106: 0100 addi s0,sp,128
108: 04090103 lb sp,64(s2)
10c: 0100 addi s0,sp,128
10e: 04090103 lb sp,64(s2)
112: 0100 addi s0,sp,128
114: 04090103 lb sp,64(s2)
118: 0100 addi s0,sp,128
11a: 04090403 lb s0,64(s2)
11e: 0100 addi s0,sp,128
120: 04090103 lb sp,64(s2)
124: 0100 addi s0,sp,128
126: 04090103 lb sp,64(s2)
12a: 0100 addi s0,sp,128
12c: 04090203 lb tp,64(s2)
130: 0100 addi s0,sp,128
132: 04090103 lb sp,64(s2)
136: 0100 addi s0,sp,128
138: 04090103 lb sp,64(s2)
13c: 0100 addi s0,sp,128
13e: 04090203 lb tp,64(s2)
142: 0100 addi s0,sp,128
144: 04090103 lb sp,64(s2)
148: 0100 addi s0,sp,128
14a: 04090203 lb tp,64(s2)
14e: 0100 addi s0,sp,128
150: 04090103 lb sp,64(s2)
154: 0100 addi s0,sp,128
156: 04090103 lb sp,64(s2)
15a: 0100 addi s0,sp,128
15c: 04090103 lb sp,64(s2)
160: 0100 addi s0,sp,128
162: 0409 addi s0,s0,2
164: 0000 unimp
166: 0101 addi sp,sp,0
Disassembly of section .debug_info:
00000000 <.debug_info>:
0: 0022 c.slli zero,0x8
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0104 addi s1,sp,128
c: 0000 unimp
e: 0000 unimp
10: 121c addi a5,sp,288
12: 0000 unimp
14: 12d0 addi a2,sp,356
16: 0000 unimp
18: 0000 unimp
1a: 0000 unimp
1c: 0000002f 0x2f
20: 0088 addi a0,sp,64
22: 0000 unimp
24: 8001 c.srli64 s0
Disassembly of section .debug_abbrev:
00000000 <.debug_abbrev>:
0: 1101 addi sp,sp,-32
2: 1000 addi s0,sp,32
4: 1106 slli sp,sp,0x21
6: 1201 addi tp,tp,-32
8: 0301 addi t1,t1,0
a: 1b0e slli s6,s6,0x23
c: 250e fld fa0,192(sp)
e: 130e slli t1,t1,0x23
10: 0005 c.nop 1
...
Disassembly of section .debug_aranges:
00000000 <.debug_aranges>:
0: 001c 0x1c
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0004 0x4
c: 0000 unimp
e: 0000 unimp
10: 121c addi a5,sp,288
12: 0000 unimp
14: 00b4 addi a3,sp,72
...
Disassembly of section .debug_str:
00000000 <.debug_str>:
0: 2e2e fld ft8,200(sp)
2: 2f2e2e2f 0x2f2e2e2f
6: 2e2e fld ft8,200(sp)
8: 722f2e2f 0x722f2e2f
c: 7369 lui t1,0xffffa
e: 672d7663 bgeu s10,s2,67a <printInt-0x986>
12: 6c2f6363 bltu t5,sp,6d8 <printInt-0x928>
16: 6269 lui tp,0x1a
18: 2f636367 0x2f636367
1c: 666e6f63 bltu t3,t1,69a <printInt-0x966>
20: 6769 lui a4,0x1a
22: 7369722f 0x7369722f
26: 642f7663 bgeu t5,sp,672 <printInt-0x98e>
2a: 7669 lui a2,0xffffa
2c: 532e lw t1,232(sp)
2e: 2f00 fld fs0,24(a4)
30: 6f68 flw fa0,92(a4)
32: 656d lui a0,0x1b
34: 2d75772f 0x2d75772f
38: 6971 lui s2,0x1c
3a: 676e flw fa4,216(sp)
3c: 312d jal fffffc66 <__heap_start+0xffff3c66>
3e: 3735 jal ffffff6a <__heap_start+0xffff3f6a>
40: 7369722f 0x7369722f
44: 672d7663 bgeu s10,s2,6b0 <printInt-0x950>
48: 756e flw fa0,248(sp)
4a: 742d lui s0,0xfffeb
4c: 636c6f6f jal t5,c6682 <__heap_start+0xba682>
50: 6168 flw fa0,68(a0)
52: 6e69 lui t3,0x1a
54: 6975622f 0x6975622f
58: 646c flw fa1,76(s0)
5a: 672d lui a4,0xb
5c: 6e2d6363 bltu s10,sp,742 <printInt-0x8be>
60: 7765 lui a4,0xffff9
62: 696c flw fa1,84(a0)
64: 2d62 fld fs10,24(sp)
66: 67617473 csrrci s0,0x676,2
6a: 3265 jal fffffa12 <__heap_start+0xffff3a12>
6c: 7369722f 0x7369722f
70: 32337663 bgeu t1,gp,39c <printInt-0xc64>
74: 752d lui a0,0xfffeb
76: 6b6e flw fs6,216(sp)
78: 6f6e flw ft10,216(sp)
7a: 652d6e77 0x652d6e77
7e: 666c flw fa1,76(a2)
80: 62696c2f 0x62696c2f
84: 00636367 0x636367
88: 20554e47 fmsub.s ft8,fa0,ft5,ft4,rmm
8c: 5341 li t1,-16
8e: 3220 fld fs0,96(a2)
90: 332e fld ft6,232(sp)
92: 2e31 jal 3ae <printInt-0xc52>
94: 0031 c.nop 12

42
test/testcases/queens.c Normal file
View File

@ -0,0 +1,42 @@
#include "io.inc"
int N = 8;
int row[8];
int col[8];
int d[2][16];
void printBoard() {
int i;
int j;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
if (col[i] == j)
printStr(" O");
else
printStr(" .");
}
printStr("\n");
}
printStr("\n");
}
void search(int c) {
if (c == N) {
printBoard();
} else {
int r;
for (r = 0; r < N; r++) {
if (row[r] == 0 && d[0][r + c] == 0 && d[1][r + N - 1 - c] == 0) {
row[r] = d[0][r + c] = d[1][r + N - 1 - c] = 1;
col[c] = r;
search(c + 1);
row[r] = d[0][r + c] = d[1][r + N - 1 - c] = 0;
}
}
}
}
int main() {
search(0);
return judgeResult % Mod; // 171
}

View File

@ -0,0 +1,63 @@
@00000000
37 01 02 00 EF 10 40 26 13 05 F0 0F B7 06 03 00
23 82 A6 00 6F F0 9F FF
@00001000
37 17 00 00 83 27 C7 41 33 45 F5 00 13 05 D5 0A
23 2E A7 40 67 80 00 00 83 47 05 00 63 82 07 02
37 17 00 00 83 26 C7 41 B3 C7 D7 00 93 87 97 20
23 2E F7 40 13 05 15 00 83 47 05 00 E3 94 07 FE
67 80 00 00 13 01 01 FE 23 2E 11 00 23 2C 81 00
23 2A 91 00 23 28 21 01 23 26 31 01 23 24 41 01
23 22 51 01 23 20 61 01 B7 17 00 00 83 A7 87 35
63 5A F0 06 B7 14 00 00 93 84 C4 35 13 0A 00 00
37 19 00 00 B7 19 00 00 B7 1A 00 00 37 1B 00 00
6F 00 40 04 13 85 C9 34 EF F0 1F F8 13 04 14 00
83 27 89 35 63 5C F4 00 83 A7 04 00 E3 94 87 FE
13 85 8A 34 EF F0 5F F6 6F F0 5F FE 13 05 0B 35
EF F0 9F F5 13 0A 1A 00 93 84 44 00 83 27 89 35
63 5A FA 00 83 27 89 35 13 04 00 00 E3 46 F0 FC
6F F0 DF FD 37 15 00 00 13 05 05 35 EF F0 DF F2
83 20 C1 01 03 24 81 01 83 24 41 01 03 29 01 01
83 29 C1 00 03 2A 81 00 83 2A 41 00 03 2B 01 00
13 01 01 02 67 80 00 00 13 01 01 FD 23 26 11 02
23 24 81 02 23 22 91 02 23 20 21 03 23 2E 31 01
23 2C 41 01 23 2A 51 01 23 28 61 01 23 26 71 01
23 24 81 01 23 22 91 01 B7 17 00 00 83 A7 87 35
63 86 A7 04 93 09 05 00 63 54 F0 04 37 14 00 00
13 04 C4 3F 93 14 25 00 37 17 00 00 13 07 C7 37
B3 84 E4 00 13 09 00 00 B7 1B 00 00 93 8B CB 37
B7 1A 00 00 93 8A CA 35 13 17 25 00 B3 8A EA 00
93 0C 15 00 37 1A 00 00 6F 00 00 05 EF F0 9F EA
83 20 C1 02 03 24 81 02 83 24 41 02 03 29 01 02
83 29 C1 01 03 2A 81 01 83 2A 41 01 03 2B 01 01
83 2B C1 00 03 2C 81 00 83 2C 41 00 13 01 01 03
67 80 00 00 13 09 19 00 83 27 8A 35 13 04 44 00
93 84 44 00 E3 5E F9 FA 03 27 04 00 E3 14 07 FE
03 A7 04 00 E3 10 07 FE B3 87 27 01 93 87 F7 FF
B3 87 37 41 13 87 07 01 13 17 27 00 33 87 EB 00
03 27 07 00 E3 10 07 FC 93 87 07 01 93 97 27 00
B3 87 FB 00 13 07 10 00 23 A0 E7 00 23 A0 E4 00
23 20 E4 00 23 A0 2A 01 13 85 0C 00 EF F0 DF ED
83 27 8A 35 B3 07 F9 00 B3 87 37 41 93 87 F7 00
93 97 27 00 B3 87 FB 00 23 A0 07 00 23 A0 04 00
23 20 04 00 6F F0 1F F7 13 01 01 FF 23 26 11 00
13 05 00 00 EF F0 5F EA 93 05 D0 0F B7 17 00 00
03 A5 C7 41 EF 00 40 09 83 20 C1 00 13 01 01 01
67 80 00 00 63 40 05 06 63 C6 05 06 13 86 05 00
93 05 05 00 13 05 F0 FF 63 0C 06 02 93 06 10 00
63 7A B6 00 63 58 C0 00 13 16 16 00 93 96 16 00
E3 6A B6 FE 13 05 00 00 63 E6 C5 00 B3 85 C5 40
33 65 D5 00 93 D6 16 00 13 56 16 00 E3 96 06 FE
67 80 00 00 93 82 00 00 EF F0 5F FB 13 85 05 00
67 80 02 00 33 05 A0 40 63 D8 05 00 B3 05 B0 40
6F F0 DF F9 B3 05 B0 40 93 82 00 00 EF F0 1F F9
33 05 A0 40 67 80 02 00 93 82 00 00 63 CA 05 00
63 4C 05 00 EF F0 9F F7 13 85 05 00 67 80 02 00
B3 05 B0 40 E3 58 05 FE 33 05 A0 40 EF F0 1F F6
33 05 B0 40 67 80 02 00
@00001348
20 4F 00 00 20 2E 00 00 0A 00 00 00
@00001354
FD 00 00 00
@00001358
08 00 00 00

534
test/testcases/queens.dump Normal file
View File

@ -0,0 +1,534 @@
./test/test.om: file format elf32-littleriscv
Disassembly of section .rom:
00000000 <.rom>:
0: 00020137 lui sp,0x20
4: 264010ef jal ra,1268 <main>
8: 0ff00513 li a0,255
c: 000306b7 lui a3,0x30
10: 00a68223 sb a0,4(a3) # 30004 <__heap_start+0x2e004>
14: ff9ff06f j c <printInt-0xff4>
Disassembly of section .text:
00001000 <printInt>:
1000: 00001737 lui a4,0x1
1004: 41c72783 lw a5,1052(a4) # 141c <__bss_end>
1008: 00f54533 xor a0,a0,a5
100c: 0ad50513 addi a0,a0,173
1010: 40a72e23 sw a0,1052(a4)
1014: 00008067 ret
00001018 <printStr>:
1018: 00054783 lbu a5,0(a0)
101c: 02078263 beqz a5,1040 <printStr+0x28>
1020: 00001737 lui a4,0x1
1024: 41c72683 lw a3,1052(a4) # 141c <__bss_end>
1028: 00d7c7b3 xor a5,a5,a3
102c: 20978793 addi a5,a5,521
1030: 40f72e23 sw a5,1052(a4)
1034: 00150513 addi a0,a0,1
1038: 00054783 lbu a5,0(a0)
103c: fe0794e3 bnez a5,1024 <printStr+0xc>
1040: 00008067 ret
00001044 <printBoard>:
1044: fe010113 addi sp,sp,-32 # 1ffe0 <__heap_start+0x1dfe0>
1048: 00112e23 sw ra,28(sp)
104c: 00812c23 sw s0,24(sp)
1050: 00912a23 sw s1,20(sp)
1054: 01212823 sw s2,16(sp)
1058: 01312623 sw s3,12(sp)
105c: 01412423 sw s4,8(sp)
1060: 01512223 sw s5,4(sp)
1064: 01612023 sw s6,0(sp)
1068: 000017b7 lui a5,0x1
106c: 3587a783 lw a5,856(a5) # 1358 <__bss_start>
1070: 06f05a63 blez a5,10e4 <printBoard+0xa0>
1074: 000014b7 lui s1,0x1
1078: 35c48493 addi s1,s1,860 # 135c <col>
107c: 00000a13 li s4,0
1080: 00001937 lui s2,0x1
1084: 000019b7 lui s3,0x1
1088: 00001ab7 lui s5,0x1
108c: 00001b37 lui s6,0x1
1090: 0440006f j 10d4 <printBoard+0x90>
1094: 34c98513 addi a0,s3,844 # 134c <__modsi3+0x34>
1098: f81ff0ef jal ra,1018 <printStr>
109c: 00140413 addi s0,s0,1
10a0: 35892783 lw a5,856(s2) # 1358 <__bss_start>
10a4: 00f45c63 bge s0,a5,10bc <printBoard+0x78>
10a8: 0004a783 lw a5,0(s1)
10ac: fe8794e3 bne a5,s0,1094 <printBoard+0x50>
10b0: 348a8513 addi a0,s5,840 # 1348 <__modsi3+0x30>
10b4: f65ff0ef jal ra,1018 <printStr>
10b8: fe5ff06f j 109c <printBoard+0x58>
10bc: 350b0513 addi a0,s6,848 # 1350 <__modsi3+0x38>
10c0: f59ff0ef jal ra,1018 <printStr>
10c4: 001a0a13 addi s4,s4,1
10c8: 00448493 addi s1,s1,4
10cc: 35892783 lw a5,856(s2)
10d0: 00fa5a63 bge s4,a5,10e4 <printBoard+0xa0>
10d4: 35892783 lw a5,856(s2)
10d8: 00000413 li s0,0
10dc: fcf046e3 bgtz a5,10a8 <printBoard+0x64>
10e0: fddff06f j 10bc <printBoard+0x78>
10e4: 00001537 lui a0,0x1
10e8: 35050513 addi a0,a0,848 # 1350 <__modsi3+0x38>
10ec: f2dff0ef jal ra,1018 <printStr>
10f0: 01c12083 lw ra,28(sp)
10f4: 01812403 lw s0,24(sp)
10f8: 01412483 lw s1,20(sp)
10fc: 01012903 lw s2,16(sp)
1100: 00c12983 lw s3,12(sp)
1104: 00812a03 lw s4,8(sp)
1108: 00412a83 lw s5,4(sp)
110c: 00012b03 lw s6,0(sp)
1110: 02010113 addi sp,sp,32
1114: 00008067 ret
00001118 <search>:
1118: fd010113 addi sp,sp,-48
111c: 02112623 sw ra,44(sp)
1120: 02812423 sw s0,40(sp)
1124: 02912223 sw s1,36(sp)
1128: 03212023 sw s2,32(sp)
112c: 01312e23 sw s3,28(sp)
1130: 01412c23 sw s4,24(sp)
1134: 01512a23 sw s5,20(sp)
1138: 01612823 sw s6,16(sp)
113c: 01712623 sw s7,12(sp)
1140: 01812423 sw s8,8(sp)
1144: 01912223 sw s9,4(sp)
1148: 000017b7 lui a5,0x1
114c: 3587a783 lw a5,856(a5) # 1358 <__bss_start>
1150: 04a78663 beq a5,a0,119c <search+0x84>
1154: 00050993 mv s3,a0
1158: 04f05463 blez a5,11a0 <search+0x88>
115c: 00001437 lui s0,0x1
1160: 3fc40413 addi s0,s0,1020 # 13fc <row>
1164: 00251493 slli s1,a0,0x2
1168: 00001737 lui a4,0x1
116c: 37c70713 addi a4,a4,892 # 137c <d>
1170: 00e484b3 add s1,s1,a4
1174: 00000913 li s2,0
1178: 00001bb7 lui s7,0x1
117c: 37cb8b93 addi s7,s7,892 # 137c <d>
1180: 00001ab7 lui s5,0x1
1184: 35ca8a93 addi s5,s5,860 # 135c <col>
1188: 00251713 slli a4,a0,0x2
118c: 00ea8ab3 add s5,s5,a4
1190: 00150c93 addi s9,a0,1
1194: 00001a37 lui s4,0x1
1198: 0500006f j 11e8 <search+0xd0>
119c: ea9ff0ef jal ra,1044 <printBoard>
11a0: 02c12083 lw ra,44(sp)
11a4: 02812403 lw s0,40(sp)
11a8: 02412483 lw s1,36(sp)
11ac: 02012903 lw s2,32(sp)
11b0: 01c12983 lw s3,28(sp)
11b4: 01812a03 lw s4,24(sp)
11b8: 01412a83 lw s5,20(sp)
11bc: 01012b03 lw s6,16(sp)
11c0: 00c12b83 lw s7,12(sp)
11c4: 00812c03 lw s8,8(sp)
11c8: 00412c83 lw s9,4(sp)
11cc: 03010113 addi sp,sp,48
11d0: 00008067 ret
11d4: 00190913 addi s2,s2,1
11d8: 358a2783 lw a5,856(s4) # 1358 <__bss_start>
11dc: 00440413 addi s0,s0,4
11e0: 00448493 addi s1,s1,4
11e4: faf95ee3 bge s2,a5,11a0 <search+0x88>
11e8: 00042703 lw a4,0(s0)
11ec: fe0714e3 bnez a4,11d4 <search+0xbc>
11f0: 0004a703 lw a4,0(s1)
11f4: fe0710e3 bnez a4,11d4 <search+0xbc>
11f8: 012787b3 add a5,a5,s2
11fc: fff78793 addi a5,a5,-1
1200: 413787b3 sub a5,a5,s3
1204: 01078713 addi a4,a5,16
1208: 00271713 slli a4,a4,0x2
120c: 00eb8733 add a4,s7,a4
1210: 00072703 lw a4,0(a4)
1214: fc0710e3 bnez a4,11d4 <search+0xbc>
1218: 01078793 addi a5,a5,16
121c: 00279793 slli a5,a5,0x2
1220: 00fb87b3 add a5,s7,a5
1224: 00100713 li a4,1
1228: 00e7a023 sw a4,0(a5)
122c: 00e4a023 sw a4,0(s1)
1230: 00e42023 sw a4,0(s0)
1234: 012aa023 sw s2,0(s5)
1238: 000c8513 mv a0,s9
123c: eddff0ef jal ra,1118 <search>
1240: 358a2783 lw a5,856(s4)
1244: 00f907b3 add a5,s2,a5
1248: 413787b3 sub a5,a5,s3
124c: 00f78793 addi a5,a5,15
1250: 00279793 slli a5,a5,0x2
1254: 00fb87b3 add a5,s7,a5
1258: 0007a023 sw zero,0(a5)
125c: 0004a023 sw zero,0(s1)
1260: 00042023 sw zero,0(s0)
1264: f71ff06f j 11d4 <search+0xbc>
00001268 <main>:
1268: ff010113 addi sp,sp,-16
126c: 00112623 sw ra,12(sp)
1270: 00000513 li a0,0
1274: ea5ff0ef jal ra,1118 <search>
1278: 0fd00593 li a1,253
127c: 000017b7 lui a5,0x1
1280: 41c7a503 lw a0,1052(a5) # 141c <__bss_end>
1284: 094000ef jal ra,1318 <__modsi3>
1288: 00c12083 lw ra,12(sp)
128c: 01010113 addi sp,sp,16
1290: 00008067 ret
00001294 <__divsi3>:
1294: 06054063 bltz a0,12f4 <__umodsi3+0x10>
1298: 0605c663 bltz a1,1304 <__umodsi3+0x20>
0000129c <__udivsi3>:
129c: 00058613 mv a2,a1
12a0: 00050593 mv a1,a0
12a4: fff00513 li a0,-1
12a8: 02060c63 beqz a2,12e0 <__udivsi3+0x44>
12ac: 00100693 li a3,1
12b0: 00b67a63 bgeu a2,a1,12c4 <__udivsi3+0x28>
12b4: 00c05863 blez a2,12c4 <__udivsi3+0x28>
12b8: 00161613 slli a2,a2,0x1
12bc: 00169693 slli a3,a3,0x1
12c0: feb66ae3 bltu a2,a1,12b4 <__udivsi3+0x18>
12c4: 00000513 li a0,0
12c8: 00c5e663 bltu a1,a2,12d4 <__udivsi3+0x38>
12cc: 40c585b3 sub a1,a1,a2
12d0: 00d56533 or a0,a0,a3
12d4: 0016d693 srli a3,a3,0x1
12d8: 00165613 srli a2,a2,0x1
12dc: fe0696e3 bnez a3,12c8 <__udivsi3+0x2c>
12e0: 00008067 ret
000012e4 <__umodsi3>:
12e4: 00008293 mv t0,ra
12e8: fb5ff0ef jal ra,129c <__udivsi3>
12ec: 00058513 mv a0,a1
12f0: 00028067 jr t0
12f4: 40a00533 neg a0,a0
12f8: 0005d863 bgez a1,1308 <__umodsi3+0x24>
12fc: 40b005b3 neg a1,a1
1300: f9dff06f j 129c <__udivsi3>
1304: 40b005b3 neg a1,a1
1308: 00008293 mv t0,ra
130c: f91ff0ef jal ra,129c <__udivsi3>
1310: 40a00533 neg a0,a0
1314: 00028067 jr t0
00001318 <__modsi3>:
1318: 00008293 mv t0,ra
131c: 0005ca63 bltz a1,1330 <__modsi3+0x18>
1320: 00054c63 bltz a0,1338 <__modsi3+0x20>
1324: f79ff0ef jal ra,129c <__udivsi3>
1328: 00058513 mv a0,a1
132c: 00028067 jr t0
1330: 40b005b3 neg a1,a1
1334: fe0558e3 bgez a0,1324 <__modsi3+0xc>
1338: 40a00533 neg a0,a0
133c: f61ff0ef jal ra,129c <__udivsi3>
1340: 40b00533 neg a0,a1
1344: 00028067 jr t0
Disassembly of section .rodata.str1.4:
00001348 <.rodata.str1.4>:
1348: 4f20 lw s0,88(a4)
134a: 0000 unimp
134c: 2e20 fld fs0,88(a2)
134e: 0000 unimp
1350: 000a c.slli zero,0x2
...
Disassembly of section .srodata:
00001354 <Mod>:
1354: 00fd addi ra,ra,31
...
Disassembly of section .sdata:
00001358 <N>:
1358: 0008 0x8
...
Disassembly of section .bss:
0000135c <col>:
...
0000137c <d>:
...
000013fc <row>:
...
Disassembly of section .sbss:
0000141c <judgeResult>:
141c: 0000 unimp
...
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 fmsub.d ft6,ft6,ft4,ft7,rmm
4: 2820 fld fs0,80(s0)
6: 29554e47 fmsub.s ft8,fa0,fs5,ft5,rmm
a: 3820 fld fs0,112(s0)
c: 332e fld ft6,232(sp)
e: 302e fld ft0,232(sp)
...
Disassembly of section .debug_line:
00000000 <.debug_line>:
0: 0164 addi s1,sp,140
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0045 c.nop 17
8: 0000 unimp
a: 0101 addi sp,sp,0
c: 000d0efb 0xd0efb
10: 0101 addi sp,sp,0
12: 0101 addi sp,sp,0
14: 0000 unimp
16: 0100 addi s0,sp,128
18: 0000 unimp
1a: 2e01 jal 32a <printInt-0xcd6>
1c: 2f2e fld ft10,200(sp)
1e: 2e2e fld ft8,200(sp)
20: 2f2e2e2f 0x2f2e2e2f
24: 2f2e fld ft10,200(sp)
26: 6972 flw fs2,28(sp)
28: 2d766373 csrrsi t1,0x2d7,12
2c: 2f636367 0x2f636367
30: 696c flw fa1,84(a0)
32: 6762 flw fa4,24(sp)
34: 632f6363 bltu t5,s2,65a <printInt-0x9a6>
38: 69666e6f jal t3,666ce <__heap_start+0x646ce>
3c: 69722f67 0x69722f67
40: 00766373 csrrsi t1,0x7,12
44: 6400 flw fs0,8(s0)
46: 7669 lui a2,0xffffa
48: 532e lw t1,232(sp)
4a: 0100 addi s0,sp,128
4c: 0000 unimp
4e: 0000 unimp
50: 0205 addi tp,tp,1
52: 1294 addi a3,sp,352
54: 0000 unimp
56: 0100c403 lbu s0,16(ra)
5a: 04090103 lb sp,64(s2)
5e: 0100 addi s0,sp,128
60: 04090403 lb s0,64(s2)
64: 0100 addi s0,sp,128
66: 04090103 lb sp,64(s2)
6a: 0100 addi s0,sp,128
6c: 04090103 lb sp,64(s2)
70: 0100 addi s0,sp,128
72: 04090103 lb sp,64(s2)
76: 0100 addi s0,sp,128
78: 04090103 lb sp,64(s2)
7c: 0100 addi s0,sp,128
7e: 04090103 lb sp,64(s2)
82: 0100 addi s0,sp,128
84: 04090203 lb tp,64(s2)
88: 0100 addi s0,sp,128
8a: 04090103 lb sp,64(s2)
8e: 0100 addi s0,sp,128
90: 04090103 lb sp,64(s2)
94: 0100 addi s0,sp,128
96: 04090103 lb sp,64(s2)
9a: 0100 addi s0,sp,128
9c: 04090203 lb tp,64(s2)
a0: 0100 addi s0,sp,128
a2: 04090203 lb tp,64(s2)
a6: 0100 addi s0,sp,128
a8: 04090103 lb sp,64(s2)
ac: 0100 addi s0,sp,128
ae: 04090103 lb sp,64(s2)
b2: 0100 addi s0,sp,128
b4: 04090203 lb tp,64(s2)
b8: 0100 addi s0,sp,128
ba: 04090103 lb sp,64(s2)
be: 0100 addi s0,sp,128
c0: 04090103 lb sp,64(s2)
c4: 0100 addi s0,sp,128
c6: 04090203 lb tp,64(s2)
ca: 0100 addi s0,sp,128
cc: 04090503 lb a0,64(s2)
d0: 0100 addi s0,sp,128
d2: 04090103 lb sp,64(s2)
d6: 0100 addi s0,sp,128
d8: 04090103 lb sp,64(s2)
dc: 0100 addi s0,sp,128
de: 04090103 lb sp,64(s2)
e2: 0100 addi s0,sp,128
e4: 04090503 lb a0,64(s2)
e8: 0100 addi s0,sp,128
ea: 04090103 lb sp,64(s2)
ee: 0100 addi s0,sp,128
f0: 04090103 lb sp,64(s2)
f4: 0100 addi s0,sp,128
f6: 04090103 lb sp,64(s2)
fa: 0100 addi s0,sp,128
fc: 04090203 lb tp,64(s2)
100: 0100 addi s0,sp,128
102: 04090203 lb tp,64(s2)
106: 0100 addi s0,sp,128
108: 04090103 lb sp,64(s2)
10c: 0100 addi s0,sp,128
10e: 04090103 lb sp,64(s2)
112: 0100 addi s0,sp,128
114: 04090103 lb sp,64(s2)
118: 0100 addi s0,sp,128
11a: 04090403 lb s0,64(s2)
11e: 0100 addi s0,sp,128
120: 04090103 lb sp,64(s2)
124: 0100 addi s0,sp,128
126: 04090103 lb sp,64(s2)
12a: 0100 addi s0,sp,128
12c: 04090203 lb tp,64(s2)
130: 0100 addi s0,sp,128
132: 04090103 lb sp,64(s2)
136: 0100 addi s0,sp,128
138: 04090103 lb sp,64(s2)
13c: 0100 addi s0,sp,128
13e: 04090203 lb tp,64(s2)
142: 0100 addi s0,sp,128
144: 04090103 lb sp,64(s2)
148: 0100 addi s0,sp,128
14a: 04090203 lb tp,64(s2)
14e: 0100 addi s0,sp,128
150: 04090103 lb sp,64(s2)
154: 0100 addi s0,sp,128
156: 04090103 lb sp,64(s2)
15a: 0100 addi s0,sp,128
15c: 04090103 lb sp,64(s2)
160: 0100 addi s0,sp,128
162: 0409 addi s0,s0,2
164: 0000 unimp
166: 0101 addi sp,sp,0
Disassembly of section .debug_info:
00000000 <.debug_info>:
0: 0022 c.slli zero,0x8
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0104 addi s1,sp,128
c: 0000 unimp
e: 0000 unimp
10: 1294 addi a3,sp,352
12: 0000 unimp
14: 1348 addi a0,sp,420
16: 0000 unimp
18: 0000 unimp
1a: 0000 unimp
1c: 0000002f 0x2f
20: 0088 addi a0,sp,64
22: 0000 unimp
24: 8001 c.srli64 s0
Disassembly of section .debug_abbrev:
00000000 <.debug_abbrev>:
0: 1101 addi sp,sp,-32
2: 1000 addi s0,sp,32
4: 1106 slli sp,sp,0x21
6: 1201 addi tp,tp,-32
8: 0301 addi t1,t1,0
a: 1b0e slli s6,s6,0x23
c: 250e fld fa0,192(sp)
e: 130e slli t1,t1,0x23
10: 0005 c.nop 1
...
Disassembly of section .debug_aranges:
00000000 <.debug_aranges>:
0: 001c 0x1c
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0004 0x4
c: 0000 unimp
e: 0000 unimp
10: 1294 addi a3,sp,352
12: 0000 unimp
14: 00b4 addi a3,sp,72
...
Disassembly of section .debug_str:
00000000 <.debug_str>:
0: 2e2e fld ft8,200(sp)
2: 2f2e2e2f 0x2f2e2e2f
6: 2e2e fld ft8,200(sp)
8: 722f2e2f 0x722f2e2f
c: 7369 lui t1,0xffffa
e: 672d7663 bgeu s10,s2,67a <printInt-0x986>
12: 6c2f6363 bltu t5,sp,6d8 <printInt-0x928>
16: 6269 lui tp,0x1a
18: 2f636367 0x2f636367
1c: 666e6f63 bltu t3,t1,69a <printInt-0x966>
20: 6769 lui a4,0x1a
22: 7369722f 0x7369722f
26: 642f7663 bgeu t5,sp,672 <printInt-0x98e>
2a: 7669 lui a2,0xffffa
2c: 532e lw t1,232(sp)
2e: 2f00 fld fs0,24(a4)
30: 6f68 flw fa0,92(a4)
32: 656d lui a0,0x1b
34: 2d75772f 0x2d75772f
38: 6971 lui s2,0x1c
3a: 676e flw fa4,216(sp)
3c: 312d jal fffffc66 <__heap_start+0xffffdc66>
3e: 3735 jal ffffff6a <__heap_start+0xffffdf6a>
40: 7369722f 0x7369722f
44: 672d7663 bgeu s10,s2,6b0 <printInt-0x950>
48: 756e flw fa0,248(sp)
4a: 742d lui s0,0xfffeb
4c: 636c6f6f jal t5,c6682 <__heap_start+0xc4682>
50: 6168 flw fa0,68(a0)
52: 6e69 lui t3,0x1a
54: 6975622f 0x6975622f
58: 646c flw fa1,76(s0)
5a: 672d lui a4,0xb
5c: 6e2d6363 bltu s10,sp,742 <printInt-0x8be>
60: 7765 lui a4,0xffff9
62: 696c flw fa1,84(a0)
64: 2d62 fld fs10,24(sp)
66: 67617473 csrrci s0,0x676,2
6a: 3265 jal fffffa12 <__heap_start+0xffffda12>
6c: 7369722f 0x7369722f
70: 32337663 bgeu t1,gp,39c <printInt-0xc64>
74: 752d lui a0,0xfffeb
76: 6b6e flw fs6,216(sp)
78: 6f6e flw ft10,216(sp)
7a: 652d6e77 0x652d6e77
7e: 666c flw fa1,76(a2)
80: 62696c2f 0x62696c2f
84: 00636367 0x636367
88: 20554e47 fmsub.s ft8,fa0,ft5,ft4,rmm
8c: 5341 li t1,-16
8e: 3220 fld fs0,96(a2)
90: 332e fld ft6,232(sp)
92: 2e31 jal 3ae <printInt-0xc52>
94: 0031 c.nop 12

View File

@ -0,0 +1,52 @@
#include "io.inc"
//考察点section 8 语句包括if,while,for,break,continue,return等
//算法:线性筛法求欧拉函数
//样例输入10
//样例输出:
// 1
// 2
// 2
// 4
// 2
// 6
// 4
// 6
// 4
int N;
int M = 0;
int check[20];
int main() {
N = 10;
int i = 0;
while (i <= N)
check[i++] = 1;
int phi[15];
int P[15];
phi[1] = 1;
for (i = 2;; ++i) {
if (i > N)
break;
if (check[i]) {
P[++M] = i;
phi[i] = i - 1;
}
int k = i;
int i;
for (i = 1; i <= M && (k * P[i] <= N); i++) {
int tmp = k * P[i];
if (tmp > N)
continue;
check[tmp] = 0;
if (k % P[i] == 0) {
phi[tmp] = phi[k] * P[i];
break;
} else {
phi[k * P[i]] = phi[k] * (P[i] - 1);
}
}
printInt(phi[k]);
}
return judgeResult % Mod; // 50
}

View File

@ -0,0 +1,54 @@
@00000000
37 01 02 00 EF 10 00 04 13 05 F0 0F B7 06 03 00
23 82 A6 00 6F F0 9F FF
@00001000
37 17 00 00 83 27 C7 35 33 45 F5 00 13 05 D5 0A
23 2E A7 34 67 80 00 00 83 47 05 00 63 82 07 02
37 17 00 00 83 26 C7 35 B3 C7 D7 00 93 87 97 20
23 2E F7 34 13 05 15 00 83 47 05 00 E3 94 07 FE
67 80 00 00 13 01 01 F4 23 2E 11 0A 23 2C 81 0A
23 2A 91 0A 23 28 21 0B 23 26 31 0B 23 24 41 0B
23 22 51 0B 23 20 61 0B 23 2E 71 09 23 2C 81 09
23 2A 91 09 23 28 A1 09 23 26 B1 09 B7 17 00 00
13 07 A0 00 23 A2 E7 30 B7 17 00 00 93 87 87 30
93 86 C7 02 13 07 10 00 23 A0 E7 00 93 87 47 00
E3 9C D7 FE 93 07 10 00 23 24 F1 04 B7 1C 00 00
93 8C 0C 31 93 0A C1 04 13 0A 20 00 13 0B A0 00
37 1D 00 00 37 1C 00 00 13 0C 8C 30 B7 1D 00 00
6F 00 C0 03 13 14 24 00 93 07 01 08 33 84 87 00
93 85 04 00 03 A5 0A 00 EF 00 00 14 23 22 A4 FC
03 A5 0A 00 EF F0 DF F0 13 0A 1A 00 03 AB 4D 30
93 8C 4C 00 93 8A 4A 00 63 4A 4B 0D 83 A7 0C 00
63 84 07 02 83 27 8D 35 93 87 17 00 23 2C FD 34
93 97 27 00 13 07 01 08 B3 07 F7 00 23 A4 47 F9
93 07 FA FF 23 A0 FA 00 83 2B 8D 35 E3 5A 70 FB
83 24 C1 00 93 05 0A 00 13 85 04 00 EF 00 C0 0D
13 04 05 00 E3 4E AB F8 93 17 25 00 B3 07 FC 00
23 A0 07 00 93 85 04 00 13 05 0A 00 EF 00 40 16
93 09 01 01 13 09 10 00 E3 0E 05 F4 13 14 24 00
93 07 01 08 33 84 87 00 93 85 F4 FF 03 A5 0A 00
EF 00 80 09 23 22 A4 FC 13 09 19 00 E3 CA 2B F5
83 A4 09 00 93 05 0A 00 13 85 04 00 EF 00 C0 07
13 04 05 00 E3 4E AB F2 93 17 24 00 B3 07 FC 00
23 A0 07 00 93 89 49 00 93 85 04 00 13 05 0A 00
EF 00 00 10 E3 14 05 FA 6F F0 DF EF 93 05 D0 0F
B7 17 00 00 03 A5 C7 35 EF 00 80 0E 83 20 C1 0B
03 24 81 0B 83 24 41 0B 03 29 01 0B 83 29 C1 0A
03 2A 81 0A 83 2A 41 0A 03 2B 01 0A 83 2B C1 09
03 2C 81 09 83 2C 41 09 03 2D 01 09 83 2D C1 08
13 01 01 0C 67 80 00 00 13 06 05 00 13 05 00 00
93 F6 15 00 63 84 06 00 33 05 C5 00 93 D5 15 00
13 16 16 00 E3 96 05 FE 67 80 00 00 63 40 05 06
63 C6 05 06 13 86 05 00 93 05 05 00 13 05 F0 FF
63 0C 06 02 93 06 10 00 63 7A B6 00 63 58 C0 00
13 16 16 00 93 96 16 00 E3 6A B6 FE 13 05 00 00
63 E6 C5 00 B3 85 C5 40 33 65 D5 00 93 D6 16 00
13 56 16 00 E3 96 06 FE 67 80 00 00 93 82 00 00
EF F0 5F FB 13 85 05 00 67 80 02 00 33 05 A0 40
63 D8 05 00 B3 05 B0 40 6F F0 DF F9 B3 05 B0 40
93 82 00 00 EF F0 1F F9 33 05 A0 40 67 80 02 00
93 82 00 00 63 CA 05 00 63 4C 05 00 EF F0 9F F7
13 85 05 00 67 80 02 00 B3 05 B0 40 E3 58 05 FE
33 05 A0 40 EF F0 1F F6 33 05 B0 40 67 80 02 00
@00001300
FD 00 00 00

View File

@ -0,0 +1,612 @@
./test/test.om: file format elf32-littleriscv
Disassembly of section .rom:
00000000 <.rom>:
0: 00020137 lui sp,0x20
4: 040010ef jal ra,1044 <main>
8: 0ff00513 li a0,255
c: 000306b7 lui a3,0x30
10: 00a68223 sb a0,4(a3) # 30004 <__heap_start+0x2e004>
14: ff9ff06f j c <printInt-0xff4>
Disassembly of section .text:
00001000 <printInt>:
1000: 00001737 lui a4,0x1
1004: 35c72783 lw a5,860(a4) # 135c <judgeResult>
1008: 00f54533 xor a0,a0,a5
100c: 0ad50513 addi a0,a0,173
1010: 34a72e23 sw a0,860(a4)
1014: 00008067 ret
00001018 <printStr>:
1018: 00054783 lbu a5,0(a0)
101c: 02078263 beqz a5,1040 <printStr+0x28>
1020: 00001737 lui a4,0x1
1024: 35c72683 lw a3,860(a4) # 135c <judgeResult>
1028: 00d7c7b3 xor a5,a5,a3
102c: 20978793 addi a5,a5,521
1030: 34f72e23 sw a5,860(a4)
1034: 00150513 addi a0,a0,1
1038: 00054783 lbu a5,0(a0)
103c: fe0794e3 bnez a5,1024 <printStr+0xc>
1040: 00008067 ret
00001044 <main>:
1044: f4010113 addi sp,sp,-192 # 1ff40 <__heap_start+0x1df40>
1048: 0a112e23 sw ra,188(sp)
104c: 0a812c23 sw s0,184(sp)
1050: 0a912a23 sw s1,180(sp)
1054: 0b212823 sw s2,176(sp)
1058: 0b312623 sw s3,172(sp)
105c: 0b412423 sw s4,168(sp)
1060: 0b512223 sw s5,164(sp)
1064: 0b612023 sw s6,160(sp)
1068: 09712e23 sw s7,156(sp)
106c: 09812c23 sw s8,152(sp)
1070: 09912a23 sw s9,148(sp)
1074: 09a12823 sw s10,144(sp)
1078: 09b12623 sw s11,140(sp)
107c: 000017b7 lui a5,0x1
1080: 00a00713 li a4,10
1084: 30e7a223 sw a4,772(a5) # 1304 <__bss_start>
1088: 000017b7 lui a5,0x1
108c: 30878793 addi a5,a5,776 # 1308 <check>
1090: 02c78693 addi a3,a5,44
1094: 00100713 li a4,1
1098: 00e7a023 sw a4,0(a5)
109c: 00478793 addi a5,a5,4
10a0: fed79ce3 bne a5,a3,1098 <main+0x54>
10a4: 00100793 li a5,1
10a8: 04f12423 sw a5,72(sp)
10ac: 00001cb7 lui s9,0x1
10b0: 310c8c93 addi s9,s9,784 # 1310 <check+0x8>
10b4: 04c10a93 addi s5,sp,76
10b8: 00200a13 li s4,2
10bc: 00a00b13 li s6,10
10c0: 00001d37 lui s10,0x1
10c4: 00001c37 lui s8,0x1
10c8: 308c0c13 addi s8,s8,776 # 1308 <check>
10cc: 00001db7 lui s11,0x1
10d0: 03c0006f j 110c <main+0xc8>
10d4: 00241413 slli s0,s0,0x2
10d8: 08010793 addi a5,sp,128
10dc: 00878433 add s0,a5,s0
10e0: 00048593 mv a1,s1
10e4: 000aa503 lw a0,0(s5)
10e8: 140000ef jal ra,1228 <__mulsi3>
10ec: fca42223 sw a0,-60(s0)
10f0: 000aa503 lw a0,0(s5)
10f4: f0dff0ef jal ra,1000 <printInt>
10f8: 001a0a13 addi s4,s4,1
10fc: 304dab03 lw s6,772(s11) # 1304 <__bss_start>
1100: 004c8c93 addi s9,s9,4
1104: 004a8a93 addi s5,s5,4
1108: 0d4b4a63 blt s6,s4,11dc <main+0x198>
110c: 000ca783 lw a5,0(s9)
1110: 02078463 beqz a5,1138 <main+0xf4>
1114: 358d2783 lw a5,856(s10) # 1358 <__bss_end>
1118: 00178793 addi a5,a5,1
111c: 34fd2c23 sw a5,856(s10)
1120: 00279793 slli a5,a5,0x2
1124: 08010713 addi a4,sp,128
1128: 00f707b3 add a5,a4,a5
112c: f947a423 sw s4,-120(a5)
1130: fffa0793 addi a5,s4,-1
1134: 00faa023 sw a5,0(s5)
1138: 358d2b83 lw s7,856(s10)
113c: fb705ae3 blez s7,10f0 <main+0xac>
1140: 00c12483 lw s1,12(sp)
1144: 000a0593 mv a1,s4
1148: 00048513 mv a0,s1
114c: 0dc000ef jal ra,1228 <__mulsi3>
1150: 00050413 mv s0,a0
1154: f8ab4ee3 blt s6,a0,10f0 <main+0xac>
1158: 00251793 slli a5,a0,0x2
115c: 00fc07b3 add a5,s8,a5
1160: 0007a023 sw zero,0(a5)
1164: 00048593 mv a1,s1
1168: 000a0513 mv a0,s4
116c: 164000ef jal ra,12d0 <__modsi3>
1170: 01010993 addi s3,sp,16
1174: 00100913 li s2,1
1178: f4050ee3 beqz a0,10d4 <main+0x90>
117c: 00241413 slli s0,s0,0x2
1180: 08010793 addi a5,sp,128
1184: 00878433 add s0,a5,s0
1188: fff48593 addi a1,s1,-1
118c: 000aa503 lw a0,0(s5)
1190: 098000ef jal ra,1228 <__mulsi3>
1194: fca42223 sw a0,-60(s0)
1198: 00190913 addi s2,s2,1
119c: f52bcae3 blt s7,s2,10f0 <main+0xac>
11a0: 0009a483 lw s1,0(s3)
11a4: 000a0593 mv a1,s4
11a8: 00048513 mv a0,s1
11ac: 07c000ef jal ra,1228 <__mulsi3>
11b0: 00050413 mv s0,a0
11b4: f2ab4ee3 blt s6,a0,10f0 <main+0xac>
11b8: 00241793 slli a5,s0,0x2
11bc: 00fc07b3 add a5,s8,a5
11c0: 0007a023 sw zero,0(a5)
11c4: 00498993 addi s3,s3,4
11c8: 00048593 mv a1,s1
11cc: 000a0513 mv a0,s4
11d0: 100000ef jal ra,12d0 <__modsi3>
11d4: fa0514e3 bnez a0,117c <main+0x138>
11d8: efdff06f j 10d4 <main+0x90>
11dc: 0fd00593 li a1,253
11e0: 000017b7 lui a5,0x1
11e4: 35c7a503 lw a0,860(a5) # 135c <judgeResult>
11e8: 0e8000ef jal ra,12d0 <__modsi3>
11ec: 0bc12083 lw ra,188(sp)
11f0: 0b812403 lw s0,184(sp)
11f4: 0b412483 lw s1,180(sp)
11f8: 0b012903 lw s2,176(sp)
11fc: 0ac12983 lw s3,172(sp)
1200: 0a812a03 lw s4,168(sp)
1204: 0a412a83 lw s5,164(sp)
1208: 0a012b03 lw s6,160(sp)
120c: 09c12b83 lw s7,156(sp)
1210: 09812c03 lw s8,152(sp)
1214: 09412c83 lw s9,148(sp)
1218: 09012d03 lw s10,144(sp)
121c: 08c12d83 lw s11,140(sp)
1220: 0c010113 addi sp,sp,192
1224: 00008067 ret
00001228 <__mulsi3>:
1228: 00050613 mv a2,a0
122c: 00000513 li a0,0
1230: 0015f693 andi a3,a1,1
1234: 00068463 beqz a3,123c <__mulsi3+0x14>
1238: 00c50533 add a0,a0,a2
123c: 0015d593 srli a1,a1,0x1
1240: 00161613 slli a2,a2,0x1
1244: fe0596e3 bnez a1,1230 <__mulsi3+0x8>
1248: 00008067 ret
0000124c <__divsi3>:
124c: 06054063 bltz a0,12ac <__umodsi3+0x10>
1250: 0605c663 bltz a1,12bc <__umodsi3+0x20>
00001254 <__udivsi3>:
1254: 00058613 mv a2,a1
1258: 00050593 mv a1,a0
125c: fff00513 li a0,-1
1260: 02060c63 beqz a2,1298 <__udivsi3+0x44>
1264: 00100693 li a3,1
1268: 00b67a63 bgeu a2,a1,127c <__udivsi3+0x28>
126c: 00c05863 blez a2,127c <__udivsi3+0x28>
1270: 00161613 slli a2,a2,0x1
1274: 00169693 slli a3,a3,0x1
1278: feb66ae3 bltu a2,a1,126c <__udivsi3+0x18>
127c: 00000513 li a0,0
1280: 00c5e663 bltu a1,a2,128c <__udivsi3+0x38>
1284: 40c585b3 sub a1,a1,a2
1288: 00d56533 or a0,a0,a3
128c: 0016d693 srli a3,a3,0x1
1290: 00165613 srli a2,a2,0x1
1294: fe0696e3 bnez a3,1280 <__udivsi3+0x2c>
1298: 00008067 ret
0000129c <__umodsi3>:
129c: 00008293 mv t0,ra
12a0: fb5ff0ef jal ra,1254 <__udivsi3>
12a4: 00058513 mv a0,a1
12a8: 00028067 jr t0
12ac: 40a00533 neg a0,a0
12b0: 0005d863 bgez a1,12c0 <__umodsi3+0x24>
12b4: 40b005b3 neg a1,a1
12b8: f9dff06f j 1254 <__udivsi3>
12bc: 40b005b3 neg a1,a1
12c0: 00008293 mv t0,ra
12c4: f91ff0ef jal ra,1254 <__udivsi3>
12c8: 40a00533 neg a0,a0
12cc: 00028067 jr t0
000012d0 <__modsi3>:
12d0: 00008293 mv t0,ra
12d4: 0005ca63 bltz a1,12e8 <__modsi3+0x18>
12d8: 00054c63 bltz a0,12f0 <__modsi3+0x20>
12dc: f79ff0ef jal ra,1254 <__udivsi3>
12e0: 00058513 mv a0,a1
12e4: 00028067 jr t0
12e8: 40b005b3 neg a1,a1
12ec: fe0558e3 bgez a0,12dc <__modsi3+0xc>
12f0: 40a00533 neg a0,a0
12f4: f61ff0ef jal ra,1254 <__udivsi3>
12f8: 40b00533 neg a0,a1
12fc: 00028067 jr t0
Disassembly of section .srodata:
00001300 <Mod>:
1300: 00fd addi ra,ra,31
...
Disassembly of section .bss:
00001304 <N>:
1304: 0000 unimp
...
00001308 <check>:
...
Disassembly of section .sbss:
00001358 <M>:
1358: 0000 unimp
...
0000135c <judgeResult>:
135c: 0000 unimp
...
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 fmsub.d ft6,ft6,ft4,ft7,rmm
4: 2820 fld fs0,80(s0)
6: 29554e47 fmsub.s ft8,fa0,fs5,ft5,rmm
a: 3820 fld fs0,112(s0)
c: 332e fld ft6,232(sp)
e: 302e fld ft0,232(sp)
...
Disassembly of section .debug_line:
00000000 <.debug_line>:
0: 008e slli ra,ra,0x3
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0048 addi a0,sp,4
8: 0000 unimp
a: 0101 addi sp,sp,0
c: 000d0efb 0xd0efb
10: 0101 addi sp,sp,0
12: 0101 addi sp,sp,0
14: 0000 unimp
16: 0100 addi s0,sp,128
18: 0000 unimp
1a: 2e01 jal 32a <printInt-0xcd6>
1c: 2f2e fld ft10,200(sp)
1e: 2e2e fld ft8,200(sp)
20: 2f2e2e2f 0x2f2e2e2f
24: 2f2e fld ft10,200(sp)
26: 6972 flw fs2,28(sp)
28: 2d766373 csrrsi t1,0x2d7,12
2c: 2f636367 0x2f636367
30: 696c flw fa1,84(a0)
32: 6762 flw fa4,24(sp)
34: 632f6363 bltu t5,s2,65a <printInt-0x9a6>
38: 69666e6f jal t3,666ce <__heap_start+0x646ce>
3c: 69722f67 0x69722f67
40: 00766373 csrrsi t1,0x7,12
44: 6d00 flw fs0,24(a0)
46: 6c75 lui s8,0x1d
48: 6964 flw fs1,84(a0)
4a: 00532e33 slt t3,t1,t0
4e: 0001 nop
50: 0000 unimp
52: 0500 addi s0,sp,640
54: 2802 fld fa6,0(sp)
56: 0012 c.slli zero,0x4
58: 0300 addi s0,sp,384
5a: 0124 addi s1,sp,136
5c: 04090103 lb sp,64(s2)
60: 0100 addi s0,sp,128
62: 04090203 lb tp,64(s2)
66: 0100 addi s0,sp,128
68: 04090103 lb sp,64(s2)
6c: 0100 addi s0,sp,128
6e: 04090103 lb sp,64(s2)
72: 0100 addi s0,sp,128
74: 04090203 lb tp,64(s2)
78: 0100 addi s0,sp,128
7a: 04090103 lb sp,64(s2)
7e: 0100 addi s0,sp,128
80: 04090103 lb sp,64(s2)
84: 0100 addi s0,sp,128
86: 04090103 lb sp,64(s2)
8a: 0100 addi s0,sp,128
8c: 0409 addi s0,s0,2
8e: 0000 unimp
90: 0101 addi sp,sp,0
92: 0164 addi s1,sp,140
94: 0000 unimp
96: 0002 c.slli64 zero
98: 0045 c.nop 17
9a: 0000 unimp
9c: 0101 addi sp,sp,0
9e: 000d0efb 0xd0efb
a2: 0101 addi sp,sp,0
a4: 0101 addi sp,sp,0
a6: 0000 unimp
a8: 0100 addi s0,sp,128
aa: 0000 unimp
ac: 2e01 jal 3bc <printInt-0xc44>
ae: 2f2e fld ft10,200(sp)
b0: 2e2e fld ft8,200(sp)
b2: 2f2e2e2f 0x2f2e2e2f
b6: 2f2e fld ft10,200(sp)
b8: 6972 flw fs2,28(sp)
ba: 2d766373 csrrsi t1,0x2d7,12
be: 2f636367 0x2f636367
c2: 696c flw fa1,84(a0)
c4: 6762 flw fa4,24(sp)
c6: 632f6363 bltu t5,s2,6ec <printInt-0x914>
ca: 69666e6f jal t3,66760 <__heap_start+0x64760>
ce: 69722f67 0x69722f67
d2: 00766373 csrrsi t1,0x7,12
d6: 6400 flw fs0,8(s0)
d8: 7669 lui a2,0xffffa
da: 532e lw t1,232(sp)
dc: 0100 addi s0,sp,128
de: 0000 unimp
e0: 0000 unimp
e2: 0205 addi tp,tp,1
e4: 124c addi a1,sp,292
e6: 0000 unimp
e8: 0100c403 lbu s0,16(ra)
ec: 04090103 lb sp,64(s2)
f0: 0100 addi s0,sp,128
f2: 04090403 lb s0,64(s2)
f6: 0100 addi s0,sp,128
f8: 04090103 lb sp,64(s2)
fc: 0100 addi s0,sp,128
fe: 04090103 lb sp,64(s2)
102: 0100 addi s0,sp,128
104: 04090103 lb sp,64(s2)
108: 0100 addi s0,sp,128
10a: 04090103 lb sp,64(s2)
10e: 0100 addi s0,sp,128
110: 04090103 lb sp,64(s2)
114: 0100 addi s0,sp,128
116: 04090203 lb tp,64(s2)
11a: 0100 addi s0,sp,128
11c: 04090103 lb sp,64(s2)
120: 0100 addi s0,sp,128
122: 04090103 lb sp,64(s2)
126: 0100 addi s0,sp,128
128: 04090103 lb sp,64(s2)
12c: 0100 addi s0,sp,128
12e: 04090203 lb tp,64(s2)
132: 0100 addi s0,sp,128
134: 04090203 lb tp,64(s2)
138: 0100 addi s0,sp,128
13a: 04090103 lb sp,64(s2)
13e: 0100 addi s0,sp,128
140: 04090103 lb sp,64(s2)
144: 0100 addi s0,sp,128
146: 04090203 lb tp,64(s2)
14a: 0100 addi s0,sp,128
14c: 04090103 lb sp,64(s2)
150: 0100 addi s0,sp,128
152: 04090103 lb sp,64(s2)
156: 0100 addi s0,sp,128
158: 04090203 lb tp,64(s2)
15c: 0100 addi s0,sp,128
15e: 04090503 lb a0,64(s2)
162: 0100 addi s0,sp,128
164: 04090103 lb sp,64(s2)
168: 0100 addi s0,sp,128
16a: 04090103 lb sp,64(s2)
16e: 0100 addi s0,sp,128
170: 04090103 lb sp,64(s2)
174: 0100 addi s0,sp,128
176: 04090503 lb a0,64(s2)
17a: 0100 addi s0,sp,128
17c: 04090103 lb sp,64(s2)
180: 0100 addi s0,sp,128
182: 04090103 lb sp,64(s2)
186: 0100 addi s0,sp,128
188: 04090103 lb sp,64(s2)
18c: 0100 addi s0,sp,128
18e: 04090203 lb tp,64(s2)
192: 0100 addi s0,sp,128
194: 04090203 lb tp,64(s2)
198: 0100 addi s0,sp,128
19a: 04090103 lb sp,64(s2)
19e: 0100 addi s0,sp,128
1a0: 04090103 lb sp,64(s2)
1a4: 0100 addi s0,sp,128
1a6: 04090103 lb sp,64(s2)
1aa: 0100 addi s0,sp,128
1ac: 04090403 lb s0,64(s2)
1b0: 0100 addi s0,sp,128
1b2: 04090103 lb sp,64(s2)
1b6: 0100 addi s0,sp,128
1b8: 04090103 lb sp,64(s2)
1bc: 0100 addi s0,sp,128
1be: 04090203 lb tp,64(s2)
1c2: 0100 addi s0,sp,128
1c4: 04090103 lb sp,64(s2)
1c8: 0100 addi s0,sp,128
1ca: 04090103 lb sp,64(s2)
1ce: 0100 addi s0,sp,128
1d0: 04090203 lb tp,64(s2)
1d4: 0100 addi s0,sp,128
1d6: 04090103 lb sp,64(s2)
1da: 0100 addi s0,sp,128
1dc: 04090203 lb tp,64(s2)
1e0: 0100 addi s0,sp,128
1e2: 04090103 lb sp,64(s2)
1e6: 0100 addi s0,sp,128
1e8: 04090103 lb sp,64(s2)
1ec: 0100 addi s0,sp,128
1ee: 04090103 lb sp,64(s2)
1f2: 0100 addi s0,sp,128
1f4: 0409 addi s0,s0,2
1f6: 0000 unimp
1f8: 0101 addi sp,sp,0
Disassembly of section .debug_info:
00000000 <.debug_info>:
0: 0022 c.slli zero,0x8
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0104 addi s1,sp,128
c: 0000 unimp
e: 0000 unimp
10: 1228 addi a0,sp,296
12: 0000 unimp
14: 124c addi a1,sp,292
16: 0000 unimp
18: 0000 unimp
1a: 0000 unimp
1c: 0032 c.slli zero,0xc
1e: 0000 unimp
20: 0000008b 0x8b
24: 8001 c.srli64 s0
26: 0022 c.slli zero,0x8
28: 0000 unimp
2a: 0002 c.slli64 zero
2c: 0014 0x14
2e: 0000 unimp
30: 0104 addi s1,sp,128
32: 0092 slli ra,ra,0x4
34: 0000 unimp
36: 124c addi a1,sp,292
38: 0000 unimp
3a: 1300 addi s0,sp,416
3c: 0000 unimp
3e: 0099 addi ra,ra,6
40: 0000 unimp
42: 0032 c.slli zero,0xc
44: 0000 unimp
46: 0000008b 0x8b
4a: 8001 c.srli64 s0
Disassembly of section .debug_abbrev:
00000000 <.debug_abbrev>:
0: 1101 addi sp,sp,-32
2: 1000 addi s0,sp,32
4: 1106 slli sp,sp,0x21
6: 1201 addi tp,tp,-32
8: 0301 addi t1,t1,0
a: 1b0e slli s6,s6,0x23
c: 250e fld fa0,192(sp)
e: 130e slli t1,t1,0x23
10: 0005 c.nop 1
12: 0000 unimp
14: 1101 addi sp,sp,-32
16: 1000 addi s0,sp,32
18: 1106 slli sp,sp,0x21
1a: 1201 addi tp,tp,-32
1c: 0301 addi t1,t1,0
1e: 1b0e slli s6,s6,0x23
20: 250e fld fa0,192(sp)
22: 130e slli t1,t1,0x23
24: 0005 c.nop 1
...
Disassembly of section .debug_aranges:
00000000 <.debug_aranges>:
0: 001c 0x1c
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0004 0x4
c: 0000 unimp
e: 0000 unimp
10: 1228 addi a0,sp,296
12: 0000 unimp
14: 0024 addi s1,sp,8
...
1e: 0000 unimp
20: 001c 0x1c
22: 0000 unimp
24: 0002 c.slli64 zero
26: 0026 c.slli zero,0x9
28: 0000 unimp
2a: 0004 0x4
2c: 0000 unimp
2e: 0000 unimp
30: 124c addi a1,sp,292
32: 0000 unimp
34: 00b4 addi a3,sp,72
...
Disassembly of section .debug_str:
00000000 <.debug_str>:
0: 2e2e fld ft8,200(sp)
2: 2f2e2e2f 0x2f2e2e2f
6: 2e2e fld ft8,200(sp)
8: 722f2e2f 0x722f2e2f
c: 7369 lui t1,0xffffa
e: 672d7663 bgeu s10,s2,67a <printInt-0x986>
12: 6c2f6363 bltu t5,sp,6d8 <printInt-0x928>
16: 6269 lui tp,0x1a
18: 2f636367 0x2f636367
1c: 666e6f63 bltu t3,t1,69a <printInt-0x966>
20: 6769 lui a4,0x1a
22: 7369722f 0x7369722f
26: 6d2f7663 bgeu t5,s2,6f2 <printInt-0x90e>
2a: 6c75 lui s8,0x1d
2c: 6964 flw fs1,84(a0)
2e: 00532e33 slt t3,t1,t0
32: 6d6f682f 0x6d6f682f
36: 2f65 jal 7ee <printInt-0x812>
38: 712d7577 0x712d7577
3c: 6e69 lui t3,0x1a
3e: 35312d67 0x35312d67
42: 69722f37 lui t5,0x69722
46: 2d766373 csrrsi t1,0x2d7,12
4a: 2d756e67 0x2d756e67
4e: 6f74 flw fa3,92(a4)
50: 68636c6f jal s8,366d6 <__heap_start+0x346d6>
54: 6961 lui s2,0x18
56: 2f6e fld ft10,216(sp)
58: 7562 flw fa0,56(sp)
5a: 6c69 lui s8,0x1a
5c: 2d64 fld fs1,216(a0)
5e: 2d636367 0x2d636367
62: 656e flw fa0,216(sp)
64: 62696c77 0x62696c77
68: 732d lui t1,0xfffeb
6a: 6174 flw fa3,68(a0)
6c: 2f326567 0x2f326567
70: 6972 flw fs2,28(sp)
72: 33766373 csrrsi t1,mhpmevent23,12
76: 2d32 fld fs10,264(sp)
78: 6e75 lui t3,0x1d
7a: 776f6e6b 0x776f6e6b
7e: 2d6e fld fs10,216(sp)
80: 6c65 lui s8,0x19
82: 2f66 fld ft10,88(sp)
84: 696c flw fa1,84(a0)
86: 6762 flw fa4,24(sp)
88: 47006363 bltu zero,a6,4ee <printInt-0xb12>
8c: 554e lw a0,240(sp)
8e: 4120 lw s0,64(a0)
90: 2e322053 0x2e322053
94: 312e3133 0x312e3133
98: 2e00 fld fs0,24(a2)
9a: 2f2e fld ft10,200(sp)
9c: 2e2e fld ft8,200(sp)
9e: 2f2e2e2f 0x2f2e2e2f
a2: 2f2e fld ft10,200(sp)
a4: 6972 flw fs2,28(sp)
a6: 2d766373 csrrsi t1,0x2d7,12
aa: 2f636367 0x2f636367
ae: 696c flw fa1,84(a0)
b0: 6762 flw fa4,24(sp)
b2: 632f6363 bltu t5,s2,6d8 <printInt-0x928>
b6: 69666e6f jal t3,6674c <__heap_start+0x6474c>
ba: 69722f67 0x69722f67
be: 2f766373 csrrsi t1,0x2f7,12
c2: 6964 flw fs1,84(a0)
c4: 2e76 fld ft8,344(sp)
c6: fadd.s ft0,ft0,ft0,rne

View File

@ -0,0 +1,38 @@
#include "io.inc"
// Target: use loops to calculate calculator of 6!
//@author yixi
int N;
int h = 99;
int i = 100;
int j = 101;
int k = 102;
int total = 0;
int main() {
int a;
int b;
int c;
int d;
int e;
int f;
N = 6;
for (a = 1; a <= N; a++)
for (b = 1; b <= N; b++)
for (c = 1; c <= N; c++)
for (d = 1; d <= N; d++)
for (e = 1; e <= N; e++)
for (f = 1; f <= N; f++)
if (a != b && a != c && a != d && a != e && a != f && a != h &&
a != i && a != j && a != k && b != c && b != d && b != e &&
b != f && b != h && b != i && b != j && b != k && c != d &&
c != e && c != f && c != h && c != i && c != j && c != k &&
d != e && d != f && d != h && d != i && d != j && d != k &&
e != f && e != h && e != i && e != j && e != k && f != h &&
f != i && f != j && f != k && i != j && h != k) {
total++;
}
printInt(total);
return judgeResult % Mod; // 134
}

View File

@ -0,0 +1,49 @@
@00000000
37 01 02 00 EF 10 00 04 13 05 F0 0F B7 06 03 00
23 82 A6 00 6F F0 9F FF
@00001000
37 17 00 00 83 27 47 2A 33 45 F5 00 13 05 D5 0A
23 22 A7 2A 67 80 00 00 83 47 05 00 63 82 07 02
37 17 00 00 83 26 47 2A B3 C7 D7 00 93 87 97 20
23 22 F7 2A 13 05 15 00 83 47 05 00 E3 94 07 FE
67 80 00 00 13 01 01 FF 23 26 11 00 B7 17 00 00
13 07 60 00 23 AE E7 28 B7 17 00 00 83 A8 87 29
B7 17 00 00 03 A3 47 29 B7 17 00 00 03 AE 07 29
B7 17 00 00 83 AE C7 28 B7 17 00 00 03 AF 07 2A
93 0F 00 00 93 07 10 00 93 06 70 00 93 02 10 00
6F 00 40 10 13 07 17 00 63 0A D7 0A E3 8C C7 FE
E3 8A A7 FE E3 88 07 FF E3 86 B7 FE E3 84 E7 FE
E3 82 F8 FE E3 00 F3 FE E3 0E FE FC E3 8C FE FC
E3 0A A6 FC E3 08 06 FD E3 06 B6 FC E3 04 E6 FC
E3 82 C8 FC E3 00 C3 FC E3 0E CE FA E3 8C CE FA
E3 0A 05 FB E3 08 B5 FA E3 06 E5 FA E3 84 A8 FA
E3 02 A3 FA E3 00 AE FA E3 8E AE F8 E3 0C B8 F8
E3 0A E8 F8 E3 88 08 F9 E3 06 03 F9 E3 04 0E F9
E3 82 0E F9 E3 80 E5 F8 E3 8E B8 F6 E3 0C B3 F6
E3 0A BE F6 E3 88 BE F6 E3 86 E8 F6 E3 04 E3 F6
E3 02 EE F6 E3 80 EE F6 E3 0E C3 F5 E3 8C D8 F5
13 0F 1F 00 93 8F 02 00 6F F0 DF F4 93 85 15 00
63 86 D5 00 13 07 10 00 6F F0 5F F4 13 08 18 00
63 06 D8 00 93 05 10 00 6F F0 DF FE 13 05 15 00
63 06 D5 00 13 08 10 00 6F F0 DF FE 13 06 16 00
63 06 D6 00 13 05 10 00 6F F0 DF FE 93 87 17 00
63 86 D7 00 13 06 10 00 6F F0 DF FE 63 96 0F 02
B7 17 00 00 03 A5 07 2A EF F0 9F E5 93 05 D0 0F
B7 17 00 00 03 A5 47 2A EF 00 00 0A 83 20 C1 00
13 01 01 01 67 80 00 00 B7 17 00 00 23 A0 E7 2B
6F F0 1F FD 63 40 05 06 63 C6 05 06 13 86 05 00
93 05 05 00 13 05 F0 FF 63 0C 06 02 93 06 10 00
63 7A B6 00 63 58 C0 00 13 16 16 00 93 96 16 00
E3 6A B6 FE 13 05 00 00 63 E6 C5 00 B3 85 C5 40
33 65 D5 00 93 D6 16 00 13 56 16 00 E3 96 06 FE
67 80 00 00 93 82 00 00 EF F0 5F FB 13 85 05 00
67 80 02 00 33 05 A0 40 63 D8 05 00 B3 05 B0 40
6F F0 DF F9 B3 05 B0 40 93 82 00 00 EF F0 1F F9
33 05 A0 40 67 80 02 00 93 82 00 00 63 CA 05 00
63 4C 05 00 EF F0 9F F7 13 85 05 00 67 80 02 00
B3 05 B0 40 E3 58 05 FE 33 05 A0 40 EF F0 1F F6
33 05 B0 40 67 80 02 00
@00001288
FD 00 00 00
@0000128C
66 00 00 00 65 00 00 00 64 00 00 00 63 00 00 00

View File

@ -0,0 +1,482 @@
./test/test.om: file format elf32-littleriscv
Disassembly of section .rom:
00000000 <.rom>:
0: 00020137 lui sp,0x20
4: 040010ef jal ra,1044 <main>
8: 0ff00513 li a0,255
c: 000306b7 lui a3,0x30
10: 00a68223 sb a0,4(a3) # 30004 <__heap_start+0x2e004>
14: ff9ff06f j c <printInt-0xff4>
Disassembly of section .text:
00001000 <printInt>:
1000: 00001737 lui a4,0x1
1004: 2a472783 lw a5,676(a4) # 12a4 <judgeResult>
1008: 00f54533 xor a0,a0,a5
100c: 0ad50513 addi a0,a0,173
1010: 2aa72223 sw a0,676(a4)
1014: 00008067 ret
00001018 <printStr>:
1018: 00054783 lbu a5,0(a0)
101c: 02078263 beqz a5,1040 <printStr+0x28>
1020: 00001737 lui a4,0x1
1024: 2a472683 lw a3,676(a4) # 12a4 <judgeResult>
1028: 00d7c7b3 xor a5,a5,a3
102c: 20978793 addi a5,a5,521
1030: 2af72223 sw a5,676(a4)
1034: 00150513 addi a0,a0,1
1038: 00054783 lbu a5,0(a0)
103c: fe0794e3 bnez a5,1024 <printStr+0xc>
1040: 00008067 ret
00001044 <main>:
1044: ff010113 addi sp,sp,-16 # 1fff0 <__heap_start+0x1dff0>
1048: 00112623 sw ra,12(sp)
104c: 000017b7 lui a5,0x1
1050: 00600713 li a4,6
1054: 28e7ae23 sw a4,668(a5) # 129c <N>
1058: 000017b7 lui a5,0x1
105c: 2987a883 lw a7,664(a5) # 1298 <h>
1060: 000017b7 lui a5,0x1
1064: 2947a303 lw t1,660(a5) # 1294 <i>
1068: 000017b7 lui a5,0x1
106c: 2907ae03 lw t3,656(a5) # 1290 <j>
1070: 000017b7 lui a5,0x1
1074: 28c7ae83 lw t4,652(a5) # 128c <__bss_start>
1078: 000017b7 lui a5,0x1
107c: 2a07af03 lw t5,672(a5) # 12a0 <__bss_end>
1080: 00000f93 li t6,0
1084: 00100793 li a5,1
1088: 00700693 li a3,7
108c: 00100293 li t0,1
1090: 1040006f j 1194 <main+0x150>
1094: 00170713 addi a4,a4,1
1098: 0ad70a63 beq a4,a3,114c <main+0x108>
109c: fec78ce3 beq a5,a2,1094 <main+0x50>
10a0: fea78ae3 beq a5,a0,1094 <main+0x50>
10a4: ff0788e3 beq a5,a6,1094 <main+0x50>
10a8: feb786e3 beq a5,a1,1094 <main+0x50>
10ac: fee784e3 beq a5,a4,1094 <main+0x50>
10b0: fef882e3 beq a7,a5,1094 <main+0x50>
10b4: fef300e3 beq t1,a5,1094 <main+0x50>
10b8: fcfe0ee3 beq t3,a5,1094 <main+0x50>
10bc: fcfe8ce3 beq t4,a5,1094 <main+0x50>
10c0: fca60ae3 beq a2,a0,1094 <main+0x50>
10c4: fd0608e3 beq a2,a6,1094 <main+0x50>
10c8: fcb606e3 beq a2,a1,1094 <main+0x50>
10cc: fce604e3 beq a2,a4,1094 <main+0x50>
10d0: fcc882e3 beq a7,a2,1094 <main+0x50>
10d4: fcc300e3 beq t1,a2,1094 <main+0x50>
10d8: face0ee3 beq t3,a2,1094 <main+0x50>
10dc: face8ce3 beq t4,a2,1094 <main+0x50>
10e0: fb050ae3 beq a0,a6,1094 <main+0x50>
10e4: fab508e3 beq a0,a1,1094 <main+0x50>
10e8: fae506e3 beq a0,a4,1094 <main+0x50>
10ec: faa884e3 beq a7,a0,1094 <main+0x50>
10f0: faa302e3 beq t1,a0,1094 <main+0x50>
10f4: faae00e3 beq t3,a0,1094 <main+0x50>
10f8: f8ae8ee3 beq t4,a0,1094 <main+0x50>
10fc: f8b80ce3 beq a6,a1,1094 <main+0x50>
1100: f8e80ae3 beq a6,a4,1094 <main+0x50>
1104: f90888e3 beq a7,a6,1094 <main+0x50>
1108: f90306e3 beq t1,a6,1094 <main+0x50>
110c: f90e04e3 beq t3,a6,1094 <main+0x50>
1110: f90e82e3 beq t4,a6,1094 <main+0x50>
1114: f8e580e3 beq a1,a4,1094 <main+0x50>
1118: f6b88ee3 beq a7,a1,1094 <main+0x50>
111c: f6b30ce3 beq t1,a1,1094 <main+0x50>
1120: f6be0ae3 beq t3,a1,1094 <main+0x50>
1124: f6be88e3 beq t4,a1,1094 <main+0x50>
1128: f6e886e3 beq a7,a4,1094 <main+0x50>
112c: f6e304e3 beq t1,a4,1094 <main+0x50>
1130: f6ee02e3 beq t3,a4,1094 <main+0x50>
1134: f6ee80e3 beq t4,a4,1094 <main+0x50>
1138: f5c30ee3 beq t1,t3,1094 <main+0x50>
113c: f5d88ce3 beq a7,t4,1094 <main+0x50>
1140: 001f0f13 addi t5,t5,1
1144: 00028f93 mv t6,t0
1148: f4dff06f j 1094 <main+0x50>
114c: 00158593 addi a1,a1,1
1150: 00d58663 beq a1,a3,115c <main+0x118>
1154: 00100713 li a4,1
1158: f45ff06f j 109c <main+0x58>
115c: 00180813 addi a6,a6,1
1160: 00d80663 beq a6,a3,116c <main+0x128>
1164: 00100593 li a1,1
1168: fedff06f j 1154 <main+0x110>
116c: 00150513 addi a0,a0,1
1170: 00d50663 beq a0,a3,117c <main+0x138>
1174: 00100813 li a6,1
1178: fedff06f j 1164 <main+0x120>
117c: 00160613 addi a2,a2,1
1180: 00d60663 beq a2,a3,118c <main+0x148>
1184: 00100513 li a0,1
1188: fedff06f j 1174 <main+0x130>
118c: 00178793 addi a5,a5,1
1190: 00d78663 beq a5,a3,119c <main+0x158>
1194: 00100613 li a2,1
1198: fedff06f j 1184 <main+0x140>
119c: 020f9663 bnez t6,11c8 <main+0x184>
11a0: 000017b7 lui a5,0x1
11a4: 2a07a503 lw a0,672(a5) # 12a0 <__bss_end>
11a8: e59ff0ef jal ra,1000 <printInt>
11ac: 0fd00593 li a1,253
11b0: 000017b7 lui a5,0x1
11b4: 2a47a503 lw a0,676(a5) # 12a4 <judgeResult>
11b8: 0a0000ef jal ra,1258 <__modsi3>
11bc: 00c12083 lw ra,12(sp)
11c0: 01010113 addi sp,sp,16
11c4: 00008067 ret
11c8: 000017b7 lui a5,0x1
11cc: 2be7a023 sw t5,672(a5) # 12a0 <__bss_end>
11d0: fd1ff06f j 11a0 <main+0x15c>
000011d4 <__divsi3>:
11d4: 06054063 bltz a0,1234 <__umodsi3+0x10>
11d8: 0605c663 bltz a1,1244 <__umodsi3+0x20>
000011dc <__udivsi3>:
11dc: 00058613 mv a2,a1
11e0: 00050593 mv a1,a0
11e4: fff00513 li a0,-1
11e8: 02060c63 beqz a2,1220 <__udivsi3+0x44>
11ec: 00100693 li a3,1
11f0: 00b67a63 bgeu a2,a1,1204 <__udivsi3+0x28>
11f4: 00c05863 blez a2,1204 <__udivsi3+0x28>
11f8: 00161613 slli a2,a2,0x1
11fc: 00169693 slli a3,a3,0x1
1200: feb66ae3 bltu a2,a1,11f4 <__udivsi3+0x18>
1204: 00000513 li a0,0
1208: 00c5e663 bltu a1,a2,1214 <__udivsi3+0x38>
120c: 40c585b3 sub a1,a1,a2
1210: 00d56533 or a0,a0,a3
1214: 0016d693 srli a3,a3,0x1
1218: 00165613 srli a2,a2,0x1
121c: fe0696e3 bnez a3,1208 <__udivsi3+0x2c>
1220: 00008067 ret
00001224 <__umodsi3>:
1224: 00008293 mv t0,ra
1228: fb5ff0ef jal ra,11dc <__udivsi3>
122c: 00058513 mv a0,a1
1230: 00028067 jr t0
1234: 40a00533 neg a0,a0
1238: 0005d863 bgez a1,1248 <__umodsi3+0x24>
123c: 40b005b3 neg a1,a1
1240: f9dff06f j 11dc <__udivsi3>
1244: 40b005b3 neg a1,a1
1248: 00008293 mv t0,ra
124c: f91ff0ef jal ra,11dc <__udivsi3>
1250: 40a00533 neg a0,a0
1254: 00028067 jr t0
00001258 <__modsi3>:
1258: 00008293 mv t0,ra
125c: 0005ca63 bltz a1,1270 <__modsi3+0x18>
1260: 00054c63 bltz a0,1278 <__modsi3+0x20>
1264: f79ff0ef jal ra,11dc <__udivsi3>
1268: 00058513 mv a0,a1
126c: 00028067 jr t0
1270: 40b005b3 neg a1,a1
1274: fe0558e3 bgez a0,1264 <__modsi3+0xc>
1278: 40a00533 neg a0,a0
127c: f61ff0ef jal ra,11dc <__udivsi3>
1280: 40b00533 neg a0,a1
1284: 00028067 jr t0
Disassembly of section .srodata:
00001288 <Mod>:
1288: 00fd addi ra,ra,31
...
Disassembly of section .sdata:
0000128c <k>:
128c: 0066 c.slli zero,0x19
...
00001290 <j>:
1290: 0065 c.nop 25
...
00001294 <i>:
1294: 0064 addi s1,sp,12
...
00001298 <h>:
1298: 00000063 beqz zero,1298 <h>
Disassembly of section .bss:
0000129c <N>:
129c: 0000 unimp
...
Disassembly of section .sbss:
000012a0 <total>:
12a0: 0000 unimp
...
000012a4 <judgeResult>:
12a4: 0000 unimp
...
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 fmsub.d ft6,ft6,ft4,ft7,rmm
4: 2820 fld fs0,80(s0)
6: 29554e47 fmsub.s ft8,fa0,fs5,ft5,rmm
a: 3820 fld fs0,112(s0)
c: 332e fld ft6,232(sp)
e: 302e fld ft0,232(sp)
...
Disassembly of section .debug_line:
00000000 <.debug_line>:
0: 0164 addi s1,sp,140
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0045 c.nop 17
8: 0000 unimp
a: 0101 addi sp,sp,0
c: 000d0efb 0xd0efb
10: 0101 addi sp,sp,0
12: 0101 addi sp,sp,0
14: 0000 unimp
16: 0100 addi s0,sp,128
18: 0000 unimp
1a: 2e01 jal 32a <printInt-0xcd6>
1c: 2f2e fld ft10,200(sp)
1e: 2e2e fld ft8,200(sp)
20: 2f2e2e2f 0x2f2e2e2f
24: 2f2e fld ft10,200(sp)
26: 6972 flw fs2,28(sp)
28: 2d766373 csrrsi t1,0x2d7,12
2c: 2f636367 0x2f636367
30: 696c flw fa1,84(a0)
32: 6762 flw fa4,24(sp)
34: 632f6363 bltu t5,s2,65a <printInt-0x9a6>
38: 69666e6f jal t3,666ce <__heap_start+0x646ce>
3c: 69722f67 0x69722f67
40: 00766373 csrrsi t1,0x7,12
44: 6400 flw fs0,8(s0)
46: 7669 lui a2,0xffffa
48: 532e lw t1,232(sp)
4a: 0100 addi s0,sp,128
4c: 0000 unimp
4e: 0000 unimp
50: 0205 addi tp,tp,1
52: 11d4 addi a3,sp,228
54: 0000 unimp
56: 0100c403 lbu s0,16(ra)
5a: 04090103 lb sp,64(s2)
5e: 0100 addi s0,sp,128
60: 04090403 lb s0,64(s2)
64: 0100 addi s0,sp,128
66: 04090103 lb sp,64(s2)
6a: 0100 addi s0,sp,128
6c: 04090103 lb sp,64(s2)
70: 0100 addi s0,sp,128
72: 04090103 lb sp,64(s2)
76: 0100 addi s0,sp,128
78: 04090103 lb sp,64(s2)
7c: 0100 addi s0,sp,128
7e: 04090103 lb sp,64(s2)
82: 0100 addi s0,sp,128
84: 04090203 lb tp,64(s2)
88: 0100 addi s0,sp,128
8a: 04090103 lb sp,64(s2)
8e: 0100 addi s0,sp,128
90: 04090103 lb sp,64(s2)
94: 0100 addi s0,sp,128
96: 04090103 lb sp,64(s2)
9a: 0100 addi s0,sp,128
9c: 04090203 lb tp,64(s2)
a0: 0100 addi s0,sp,128
a2: 04090203 lb tp,64(s2)
a6: 0100 addi s0,sp,128
a8: 04090103 lb sp,64(s2)
ac: 0100 addi s0,sp,128
ae: 04090103 lb sp,64(s2)
b2: 0100 addi s0,sp,128
b4: 04090203 lb tp,64(s2)
b8: 0100 addi s0,sp,128
ba: 04090103 lb sp,64(s2)
be: 0100 addi s0,sp,128
c0: 04090103 lb sp,64(s2)
c4: 0100 addi s0,sp,128
c6: 04090203 lb tp,64(s2)
ca: 0100 addi s0,sp,128
cc: 04090503 lb a0,64(s2)
d0: 0100 addi s0,sp,128
d2: 04090103 lb sp,64(s2)
d6: 0100 addi s0,sp,128
d8: 04090103 lb sp,64(s2)
dc: 0100 addi s0,sp,128
de: 04090103 lb sp,64(s2)
e2: 0100 addi s0,sp,128
e4: 04090503 lb a0,64(s2)
e8: 0100 addi s0,sp,128
ea: 04090103 lb sp,64(s2)
ee: 0100 addi s0,sp,128
f0: 04090103 lb sp,64(s2)
f4: 0100 addi s0,sp,128
f6: 04090103 lb sp,64(s2)
fa: 0100 addi s0,sp,128
fc: 04090203 lb tp,64(s2)
100: 0100 addi s0,sp,128
102: 04090203 lb tp,64(s2)
106: 0100 addi s0,sp,128
108: 04090103 lb sp,64(s2)
10c: 0100 addi s0,sp,128
10e: 04090103 lb sp,64(s2)
112: 0100 addi s0,sp,128
114: 04090103 lb sp,64(s2)
118: 0100 addi s0,sp,128
11a: 04090403 lb s0,64(s2)
11e: 0100 addi s0,sp,128
120: 04090103 lb sp,64(s2)
124: 0100 addi s0,sp,128
126: 04090103 lb sp,64(s2)
12a: 0100 addi s0,sp,128
12c: 04090203 lb tp,64(s2)
130: 0100 addi s0,sp,128
132: 04090103 lb sp,64(s2)
136: 0100 addi s0,sp,128
138: 04090103 lb sp,64(s2)
13c: 0100 addi s0,sp,128
13e: 04090203 lb tp,64(s2)
142: 0100 addi s0,sp,128
144: 04090103 lb sp,64(s2)
148: 0100 addi s0,sp,128
14a: 04090203 lb tp,64(s2)
14e: 0100 addi s0,sp,128
150: 04090103 lb sp,64(s2)
154: 0100 addi s0,sp,128
156: 04090103 lb sp,64(s2)
15a: 0100 addi s0,sp,128
15c: 04090103 lb sp,64(s2)
160: 0100 addi s0,sp,128
162: 0409 addi s0,s0,2
164: 0000 unimp
166: 0101 addi sp,sp,0
Disassembly of section .debug_info:
00000000 <.debug_info>:
0: 0022 c.slli zero,0x8
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0104 addi s1,sp,128
c: 0000 unimp
e: 0000 unimp
10: 11d4 addi a3,sp,228
12: 0000 unimp
14: 1288 addi a0,sp,352
16: 0000 unimp
18: 0000 unimp
1a: 0000 unimp
1c: 0000002f 0x2f
20: 0088 addi a0,sp,64
22: 0000 unimp
24: 8001 c.srli64 s0
Disassembly of section .debug_abbrev:
00000000 <.debug_abbrev>:
0: 1101 addi sp,sp,-32
2: 1000 addi s0,sp,32
4: 1106 slli sp,sp,0x21
6: 1201 addi tp,tp,-32
8: 0301 addi t1,t1,0
a: 1b0e slli s6,s6,0x23
c: 250e fld fa0,192(sp)
e: 130e slli t1,t1,0x23
10: 0005 c.nop 1
...
Disassembly of section .debug_aranges:
00000000 <.debug_aranges>:
0: 001c 0x1c
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0004 0x4
c: 0000 unimp
e: 0000 unimp
10: 11d4 addi a3,sp,228
12: 0000 unimp
14: 00b4 addi a3,sp,72
...
Disassembly of section .debug_str:
00000000 <.debug_str>:
0: 2e2e fld ft8,200(sp)
2: 2f2e2e2f 0x2f2e2e2f
6: 2e2e fld ft8,200(sp)
8: 722f2e2f 0x722f2e2f
c: 7369 lui t1,0xffffa
e: 672d7663 bgeu s10,s2,67a <printInt-0x986>
12: 6c2f6363 bltu t5,sp,6d8 <printInt-0x928>
16: 6269 lui tp,0x1a
18: 2f636367 0x2f636367
1c: 666e6f63 bltu t3,t1,69a <printInt-0x966>
20: 6769 lui a4,0x1a
22: 7369722f 0x7369722f
26: 642f7663 bgeu t5,sp,672 <printInt-0x98e>
2a: 7669 lui a2,0xffffa
2c: 532e lw t1,232(sp)
2e: 2f00 fld fs0,24(a4)
30: 6f68 flw fa0,92(a4)
32: 656d lui a0,0x1b
34: 2d75772f 0x2d75772f
38: 6971 lui s2,0x1c
3a: 676e flw fa4,216(sp)
3c: 312d jal fffffc66 <__heap_start+0xffffdc66>
3e: 3735 jal ffffff6a <__heap_start+0xffffdf6a>
40: 7369722f 0x7369722f
44: 672d7663 bgeu s10,s2,6b0 <printInt-0x950>
48: 756e flw fa0,248(sp)
4a: 742d lui s0,0xfffeb
4c: 636c6f6f jal t5,c6682 <__heap_start+0xc4682>
50: 6168 flw fa0,68(a0)
52: 6e69 lui t3,0x1a
54: 6975622f 0x6975622f
58: 646c flw fa1,76(s0)
5a: 672d lui a4,0xb
5c: 6e2d6363 bltu s10,sp,742 <printInt-0x8be>
60: 7765 lui a4,0xffff9
62: 696c flw fa1,84(a0)
64: 2d62 fld fs10,24(sp)
66: 67617473 csrrci s0,0x676,2
6a: 3265 jal fffffa12 <__heap_start+0xffffda12>
6c: 7369722f 0x7369722f
70: 32337663 bgeu t1,gp,39c <printInt-0xc64>
74: 752d lui a0,0xfffeb
76: 6b6e flw fs6,216(sp)
78: 6f6e flw ft10,216(sp)
7a: 652d6e77 0x652d6e77
7e: 666c flw fa1,76(a2)
80: 62696c2f 0x62696c2f
84: 00636367 0x636367
88: 20554e47 fmsub.s ft8,fa0,ft5,ft4,rmm
8c: 5341 li t1,-16
8e: 3220 fld fs0,96(a2)
90: 332e fld ft6,232(sp)
92: 2e31 jal 3ae <printInt-0xc52>
94: 0031 c.nop 12

15
test/testcases/tak.c Normal file
View File

@ -0,0 +1,15 @@
#include "io.inc"
int tak(int x, int y, int z) {
if (y < x)
return 1 + tak(tak(x - 1, y, z), tak(y - 1, z, x), tak(z - 1, x, y));
else
return z;
}
int main() {
int a = 18;
int b = 12;
int c = 6;
printInt(tak(a, b, c));
return judgeResult % Mod; // 186
}

35
test/testcases/tak.data Normal file
View File

@ -0,0 +1,35 @@
@00000000
37 01 02 00 EF 10 80 0D 13 05 F0 0F B7 06 03 00
23 82 A6 00 6F F0 9F FF
@00001000
37 17 00 00 83 27 C7 1C 33 45 F5 00 13 05 D5 0A
23 26 A7 1C 67 80 00 00 83 47 05 00 63 82 07 02
37 17 00 00 83 26 C7 1C B3 C7 D7 00 93 87 97 20
23 26 F7 1C 13 05 15 00 83 47 05 00 E3 94 07 FE
67 80 00 00 13 01 01 FE 23 2E 11 00 23 2C 81 00
23 2A 91 00 23 28 21 01 23 26 31 01 23 24 41 01
13 04 06 00 63 C4 A5 02 13 05 04 00 83 20 C1 01
03 24 81 01 83 24 41 01 03 29 01 01 83 29 C1 00
03 2A 81 00 13 01 01 02 67 80 00 00 93 04 05 00
13 89 05 00 13 05 F5 FF EF F0 DF FA 93 09 05 00
13 86 04 00 93 05 04 00 13 05 F9 FF EF F0 9F F9
13 0A 05 00 13 06 09 00 93 85 04 00 13 05 F4 FF
EF F0 5F F8 13 06 05 00 93 05 0A 00 13 85 09 00
EF F0 5F F7 13 04 15 00 6F F0 1F F9 13 01 01 FF
23 26 11 00 13 06 60 00 93 05 C0 00 13 05 20 01
EF F0 5F F5 EF F0 DF F0 93 05 D0 0F B7 17 00 00
03 A5 C7 1C EF 00 40 09 83 20 C1 00 13 01 01 01
67 80 00 00 63 40 05 06 63 C6 05 06 13 86 05 00
93 05 05 00 13 05 F0 FF 63 0C 06 02 93 06 10 00
63 7A B6 00 63 58 C0 00 13 16 16 00 93 96 16 00
E3 6A B6 FE 13 05 00 00 63 E6 C5 00 B3 85 C5 40
33 65 D5 00 93 D6 16 00 13 56 16 00 E3 96 06 FE
67 80 00 00 93 82 00 00 EF F0 5F FB 13 85 05 00
67 80 02 00 33 05 A0 40 63 D8 05 00 B3 05 B0 40
6F F0 DF F9 B3 05 B0 40 93 82 00 00 EF F0 1F F9
33 05 A0 40 67 80 02 00 93 82 00 00 63 CA 05 00
63 4C 05 00 EF F0 9F F7 13 85 05 00 67 80 02 00
B3 05 B0 40 E3 58 05 FE 33 05 A0 40 EF F0 1F F6
33 05 B0 40 67 80 02 00
@000011C8
FD 00 00 00

409
test/testcases/tak.dump Normal file
View File

@ -0,0 +1,409 @@
./test/test.om: file format elf32-littleriscv
Disassembly of section .rom:
00000000 <.rom>:
0: 00020137 lui sp,0x20
4: 0d8010ef jal ra,10dc <main>
8: 0ff00513 li a0,255
c: 000306b7 lui a3,0x30
10: 00a68223 sb a0,4(a3) # 30004 <__heap_start+0x2e004>
14: ff9ff06f j c <printInt-0xff4>
Disassembly of section .text:
00001000 <printInt>:
1000: 00001737 lui a4,0x1
1004: 1cc72783 lw a5,460(a4) # 11cc <__bss_end>
1008: 00f54533 xor a0,a0,a5
100c: 0ad50513 addi a0,a0,173
1010: 1ca72623 sw a0,460(a4)
1014: 00008067 ret
00001018 <printStr>:
1018: 00054783 lbu a5,0(a0)
101c: 02078263 beqz a5,1040 <printStr+0x28>
1020: 00001737 lui a4,0x1
1024: 1cc72683 lw a3,460(a4) # 11cc <__bss_end>
1028: 00d7c7b3 xor a5,a5,a3
102c: 20978793 addi a5,a5,521
1030: 1cf72623 sw a5,460(a4)
1034: 00150513 addi a0,a0,1
1038: 00054783 lbu a5,0(a0)
103c: fe0794e3 bnez a5,1024 <printStr+0xc>
1040: 00008067 ret
00001044 <tak>:
1044: fe010113 addi sp,sp,-32 # 1ffe0 <__heap_start+0x1dfe0>
1048: 00112e23 sw ra,28(sp)
104c: 00812c23 sw s0,24(sp)
1050: 00912a23 sw s1,20(sp)
1054: 01212823 sw s2,16(sp)
1058: 01312623 sw s3,12(sp)
105c: 01412423 sw s4,8(sp)
1060: 00060413 mv s0,a2
1064: 02a5c463 blt a1,a0,108c <tak+0x48>
1068: 00040513 mv a0,s0
106c: 01c12083 lw ra,28(sp)
1070: 01812403 lw s0,24(sp)
1074: 01412483 lw s1,20(sp)
1078: 01012903 lw s2,16(sp)
107c: 00c12983 lw s3,12(sp)
1080: 00812a03 lw s4,8(sp)
1084: 02010113 addi sp,sp,32
1088: 00008067 ret
108c: 00050493 mv s1,a0
1090: 00058913 mv s2,a1
1094: fff50513 addi a0,a0,-1
1098: fadff0ef jal ra,1044 <tak>
109c: 00050993 mv s3,a0
10a0: 00048613 mv a2,s1
10a4: 00040593 mv a1,s0
10a8: fff90513 addi a0,s2,-1
10ac: f99ff0ef jal ra,1044 <tak>
10b0: 00050a13 mv s4,a0
10b4: 00090613 mv a2,s2
10b8: 00048593 mv a1,s1
10bc: fff40513 addi a0,s0,-1
10c0: f85ff0ef jal ra,1044 <tak>
10c4: 00050613 mv a2,a0
10c8: 000a0593 mv a1,s4
10cc: 00098513 mv a0,s3
10d0: f75ff0ef jal ra,1044 <tak>
10d4: 00150413 addi s0,a0,1
10d8: f91ff06f j 1068 <tak+0x24>
000010dc <main>:
10dc: ff010113 addi sp,sp,-16
10e0: 00112623 sw ra,12(sp)
10e4: 00600613 li a2,6
10e8: 00c00593 li a1,12
10ec: 01200513 li a0,18
10f0: f55ff0ef jal ra,1044 <tak>
10f4: f0dff0ef jal ra,1000 <printInt>
10f8: 0fd00593 li a1,253
10fc: 000017b7 lui a5,0x1
1100: 1cc7a503 lw a0,460(a5) # 11cc <__bss_end>
1104: 094000ef jal ra,1198 <__modsi3>
1108: 00c12083 lw ra,12(sp)
110c: 01010113 addi sp,sp,16
1110: 00008067 ret
00001114 <__divsi3>:
1114: 06054063 bltz a0,1174 <__umodsi3+0x10>
1118: 0605c663 bltz a1,1184 <__umodsi3+0x20>
0000111c <__udivsi3>:
111c: 00058613 mv a2,a1
1120: 00050593 mv a1,a0
1124: fff00513 li a0,-1
1128: 02060c63 beqz a2,1160 <__udivsi3+0x44>
112c: 00100693 li a3,1
1130: 00b67a63 bgeu a2,a1,1144 <__udivsi3+0x28>
1134: 00c05863 blez a2,1144 <__udivsi3+0x28>
1138: 00161613 slli a2,a2,0x1
113c: 00169693 slli a3,a3,0x1
1140: feb66ae3 bltu a2,a1,1134 <__udivsi3+0x18>
1144: 00000513 li a0,0
1148: 00c5e663 bltu a1,a2,1154 <__udivsi3+0x38>
114c: 40c585b3 sub a1,a1,a2
1150: 00d56533 or a0,a0,a3
1154: 0016d693 srli a3,a3,0x1
1158: 00165613 srli a2,a2,0x1
115c: fe0696e3 bnez a3,1148 <__udivsi3+0x2c>
1160: 00008067 ret
00001164 <__umodsi3>:
1164: 00008293 mv t0,ra
1168: fb5ff0ef jal ra,111c <__udivsi3>
116c: 00058513 mv a0,a1
1170: 00028067 jr t0
1174: 40a00533 neg a0,a0
1178: 0005d863 bgez a1,1188 <__umodsi3+0x24>
117c: 40b005b3 neg a1,a1
1180: f9dff06f j 111c <__udivsi3>
1184: 40b005b3 neg a1,a1
1188: 00008293 mv t0,ra
118c: f91ff0ef jal ra,111c <__udivsi3>
1190: 40a00533 neg a0,a0
1194: 00028067 jr t0
00001198 <__modsi3>:
1198: 00008293 mv t0,ra
119c: 0005ca63 bltz a1,11b0 <__modsi3+0x18>
11a0: 00054c63 bltz a0,11b8 <__modsi3+0x20>
11a4: f79ff0ef jal ra,111c <__udivsi3>
11a8: 00058513 mv a0,a1
11ac: 00028067 jr t0
11b0: 40b005b3 neg a1,a1
11b4: fe0558e3 bgez a0,11a4 <__modsi3+0xc>
11b8: 40a00533 neg a0,a0
11bc: f61ff0ef jal ra,111c <__udivsi3>
11c0: 40b00533 neg a0,a1
11c4: 00028067 jr t0
Disassembly of section .srodata:
000011c8 <Mod>:
11c8: 00fd addi ra,ra,31
...
Disassembly of section .sbss:
000011cc <judgeResult>:
11cc: 0000 unimp
...
Disassembly of section .comment:
00000000 <.comment>:
0: 3a434347 fmsub.d ft6,ft6,ft4,ft7,rmm
4: 2820 fld fs0,80(s0)
6: 29554e47 fmsub.s ft8,fa0,fs5,ft5,rmm
a: 3820 fld fs0,112(s0)
c: 332e fld ft6,232(sp)
e: 302e fld ft0,232(sp)
...
Disassembly of section .debug_line:
00000000 <.debug_line>:
0: 0164 addi s1,sp,140
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0045 c.nop 17
8: 0000 unimp
a: 0101 addi sp,sp,0
c: 000d0efb 0xd0efb
10: 0101 addi sp,sp,0
12: 0101 addi sp,sp,0
14: 0000 unimp
16: 0100 addi s0,sp,128
18: 0000 unimp
1a: 2e01 jal 32a <printInt-0xcd6>
1c: 2f2e fld ft10,200(sp)
1e: 2e2e fld ft8,200(sp)
20: 2f2e2e2f 0x2f2e2e2f
24: 2f2e fld ft10,200(sp)
26: 6972 flw fs2,28(sp)
28: 2d766373 csrrsi t1,0x2d7,12
2c: 2f636367 0x2f636367
30: 696c flw fa1,84(a0)
32: 6762 flw fa4,24(sp)
34: 632f6363 bltu t5,s2,65a <printInt-0x9a6>
38: 69666e6f jal t3,666ce <__heap_start+0x646ce>
3c: 69722f67 0x69722f67
40: 00766373 csrrsi t1,0x7,12
44: 6400 flw fs0,8(s0)
46: 7669 lui a2,0xffffa
48: 532e lw t1,232(sp)
4a: 0100 addi s0,sp,128
4c: 0000 unimp
4e: 0000 unimp
50: 0205 addi tp,tp,1
52: 1114 addi a3,sp,160
54: 0000 unimp
56: 0100c403 lbu s0,16(ra)
5a: 04090103 lb sp,64(s2)
5e: 0100 addi s0,sp,128
60: 04090403 lb s0,64(s2)
64: 0100 addi s0,sp,128
66: 04090103 lb sp,64(s2)
6a: 0100 addi s0,sp,128
6c: 04090103 lb sp,64(s2)
70: 0100 addi s0,sp,128
72: 04090103 lb sp,64(s2)
76: 0100 addi s0,sp,128
78: 04090103 lb sp,64(s2)
7c: 0100 addi s0,sp,128
7e: 04090103 lb sp,64(s2)
82: 0100 addi s0,sp,128
84: 04090203 lb tp,64(s2)
88: 0100 addi s0,sp,128
8a: 04090103 lb sp,64(s2)
8e: 0100 addi s0,sp,128
90: 04090103 lb sp,64(s2)
94: 0100 addi s0,sp,128
96: 04090103 lb sp,64(s2)
9a: 0100 addi s0,sp,128
9c: 04090203 lb tp,64(s2)
a0: 0100 addi s0,sp,128
a2: 04090203 lb tp,64(s2)
a6: 0100 addi s0,sp,128
a8: 04090103 lb sp,64(s2)
ac: 0100 addi s0,sp,128
ae: 04090103 lb sp,64(s2)
b2: 0100 addi s0,sp,128
b4: 04090203 lb tp,64(s2)
b8: 0100 addi s0,sp,128
ba: 04090103 lb sp,64(s2)
be: 0100 addi s0,sp,128
c0: 04090103 lb sp,64(s2)
c4: 0100 addi s0,sp,128
c6: 04090203 lb tp,64(s2)
ca: 0100 addi s0,sp,128
cc: 04090503 lb a0,64(s2)
d0: 0100 addi s0,sp,128
d2: 04090103 lb sp,64(s2)
d6: 0100 addi s0,sp,128
d8: 04090103 lb sp,64(s2)
dc: 0100 addi s0,sp,128
de: 04090103 lb sp,64(s2)
e2: 0100 addi s0,sp,128
e4: 04090503 lb a0,64(s2)
e8: 0100 addi s0,sp,128
ea: 04090103 lb sp,64(s2)
ee: 0100 addi s0,sp,128
f0: 04090103 lb sp,64(s2)
f4: 0100 addi s0,sp,128
f6: 04090103 lb sp,64(s2)
fa: 0100 addi s0,sp,128
fc: 04090203 lb tp,64(s2)
100: 0100 addi s0,sp,128
102: 04090203 lb tp,64(s2)
106: 0100 addi s0,sp,128
108: 04090103 lb sp,64(s2)
10c: 0100 addi s0,sp,128
10e: 04090103 lb sp,64(s2)
112: 0100 addi s0,sp,128
114: 04090103 lb sp,64(s2)
118: 0100 addi s0,sp,128
11a: 04090403 lb s0,64(s2)
11e: 0100 addi s0,sp,128
120: 04090103 lb sp,64(s2)
124: 0100 addi s0,sp,128
126: 04090103 lb sp,64(s2)
12a: 0100 addi s0,sp,128
12c: 04090203 lb tp,64(s2)
130: 0100 addi s0,sp,128
132: 04090103 lb sp,64(s2)
136: 0100 addi s0,sp,128
138: 04090103 lb sp,64(s2)
13c: 0100 addi s0,sp,128
13e: 04090203 lb tp,64(s2)
142: 0100 addi s0,sp,128
144: 04090103 lb sp,64(s2)
148: 0100 addi s0,sp,128
14a: 04090203 lb tp,64(s2)
14e: 0100 addi s0,sp,128
150: 04090103 lb sp,64(s2)
154: 0100 addi s0,sp,128
156: 04090103 lb sp,64(s2)
15a: 0100 addi s0,sp,128
15c: 04090103 lb sp,64(s2)
160: 0100 addi s0,sp,128
162: 0409 addi s0,s0,2
164: 0000 unimp
166: 0101 addi sp,sp,0
Disassembly of section .debug_info:
00000000 <.debug_info>:
0: 0022 c.slli zero,0x8
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0104 addi s1,sp,128
c: 0000 unimp
e: 0000 unimp
10: 1114 addi a3,sp,160
12: 0000 unimp
14: 11c8 addi a0,sp,228
16: 0000 unimp
18: 0000 unimp
1a: 0000 unimp
1c: 0000002f 0x2f
20: 0088 addi a0,sp,64
22: 0000 unimp
24: 8001 c.srli64 s0
Disassembly of section .debug_abbrev:
00000000 <.debug_abbrev>:
0: 1101 addi sp,sp,-32
2: 1000 addi s0,sp,32
4: 1106 slli sp,sp,0x21
6: 1201 addi tp,tp,-32
8: 0301 addi t1,t1,0
a: 1b0e slli s6,s6,0x23
c: 250e fld fa0,192(sp)
e: 130e slli t1,t1,0x23
10: 0005 c.nop 1
...
Disassembly of section .debug_aranges:
00000000 <.debug_aranges>:
0: 001c 0x1c
2: 0000 unimp
4: 0002 c.slli64 zero
6: 0000 unimp
8: 0000 unimp
a: 0004 0x4
c: 0000 unimp
e: 0000 unimp
10: 1114 addi a3,sp,160
12: 0000 unimp
14: 00b4 addi a3,sp,72
...
Disassembly of section .debug_str:
00000000 <.debug_str>:
0: 2e2e fld ft8,200(sp)
2: 2f2e2e2f 0x2f2e2e2f
6: 2e2e fld ft8,200(sp)
8: 722f2e2f 0x722f2e2f
c: 7369 lui t1,0xffffa
e: 672d7663 bgeu s10,s2,67a <printInt-0x986>
12: 6c2f6363 bltu t5,sp,6d8 <printInt-0x928>
16: 6269 lui tp,0x1a
18: 2f636367 0x2f636367
1c: 666e6f63 bltu t3,t1,69a <printInt-0x966>
20: 6769 lui a4,0x1a
22: 7369722f 0x7369722f
26: 642f7663 bgeu t5,sp,672 <printInt-0x98e>
2a: 7669 lui a2,0xffffa
2c: 532e lw t1,232(sp)
2e: 2f00 fld fs0,24(a4)
30: 6f68 flw fa0,92(a4)
32: 656d lui a0,0x1b
34: 2d75772f 0x2d75772f
38: 6971 lui s2,0x1c
3a: 676e flw fa4,216(sp)
3c: 312d jal fffffc66 <__heap_start+0xffffdc66>
3e: 3735 jal ffffff6a <__heap_start+0xffffdf6a>
40: 7369722f 0x7369722f
44: 672d7663 bgeu s10,s2,6b0 <printInt-0x950>
48: 756e flw fa0,248(sp)
4a: 742d lui s0,0xfffeb
4c: 636c6f6f jal t5,c6682 <__heap_start+0xc4682>
50: 6168 flw fa0,68(a0)
52: 6e69 lui t3,0x1a
54: 6975622f 0x6975622f
58: 646c flw fa1,76(s0)
5a: 672d lui a4,0xb
5c: 6e2d6363 bltu s10,sp,742 <printInt-0x8be>
60: 7765 lui a4,0xffff9
62: 696c flw fa1,84(a0)
64: 2d62 fld fs10,24(sp)
66: 67617473 csrrci s0,0x676,2
6a: 3265 jal fffffa12 <__heap_start+0xffffda12>
6c: 7369722f 0x7369722f
70: 32337663 bgeu t1,gp,39c <printInt-0xc64>
74: 752d lui a0,0xfffeb
76: 6b6e flw fs6,216(sp)
78: 6f6e flw ft10,216(sp)
7a: 652d6e77 0x652d6e77
7e: 666c flw fa1,76(a2)
80: 62696c2f 0x62696c2f
84: 00636367 0x636367
88: 20554e47 fmsub.s ft8,fa0,ft5,ft4,rmm
8c: 5341 li t1,-16
8e: 3220 fld fs0,96(a2)
90: 332e fld ft6,232(sp)
92: 2e31 jal 3ae <printInt-0xc52>
94: 0031 c.nop 12