This commit is contained in:
peteraa 2019-06-07 17:43:33 +02:00
commit 932413bb3d
61 changed files with 7249 additions and 0 deletions

View file

@ -0,0 +1,52 @@
main:
addi x1, zero, 1
addi x2, zero, -1
addi x3, zero, 3
addi x4, zero, 7
addi x5, zero, 14
addi x6, zero, 28
addi x7, zero, 56
addi x8, zero, 133
addi x9, zero, 258
addi x10, x1, -231
addi x11, x1, -510
slt x12, x1, x1
slt x12, x1, x2
slt x12, x1, x3
slt x12, x2, x1
slt x12, x2, x2
slt x12, x2, x3
sltu x12, x1, x1
sltu x12, x1, x2
sltu x12, x1, x3
sltu x12, x2, x1
sltu x12, x2, x2
sltu x12, x2, x3
sll x14, x1, x1
sll x14, x1, x2
sll x14, x1, x3
srl x14, x1, x1
srl x14, x1, x2
srl x14, x1, x3
sra x14, x1, x1
sra x14, x1, x2
sra x14, x1, x3
and x15, x8, x9
and x15, x9, x10
or x15, x8, x9
or x15, x9, x10
xor x15, x8, x9
xor x15, x9, x10
add x16, x1, x5
add x16, x2, x7
add x16, x3, x6
add x16, x4, x10
add x16, x5, x14
add x16, x6, x15
add x16, x7, x7
add x16, x8, x9
add x16, x9, x1
add x16, x10, x8
add x16, x11, x9
add x16, x12, x10
done

View file

@ -0,0 +1,205 @@
main:
ori gp, gp, 0xFFFFFE09
and gp, gp, ra
xor ra, ra, sp
sra ra, sp, sp
or sp, ra, ra
xori ra, sp, 0x003D
srli sp, sp, 0xFFFFFFF2
addi ra, sp, 0x0012
add ra, gp, sp
ori gp, ra, 0xFFFFFFB8
sll ra, ra, ra
sll sp, gp, ra
slt ra, gp, ra
srai gp, gp, 0xFFFFFFFB
slli ra, ra, 0x0007
sub sp, gp, sp
andi ra, gp, 0x002D
sub gp, gp, sp
srai ra, gp, 0x0005
or sp, ra, sp
xori ra, gp, 0xFFFFFF54
sll ra, sp, ra
sub gp, gp, sp
add ra, sp, sp
sll ra, gp, ra
add gp, sp, sp
ori gp, sp, 0xFFFFFE68
srli sp, gp, 0xFFFFFFF1
sltui ra, ra, 0xFFFFFE5D
srli ra, gp, 0x0006
srai sp, sp, 0x0005
andi sp, sp, 0x0129
and sp, sp, sp
slli gp, ra, 0x0001
or gp, gp, gp
or sp, gp, gp
slli gp, gp, 0x0006
srl sp, ra, gp
sltui gp, ra, 0xFFFFFEC3
add sp, gp, sp
xori ra, ra, 0xFFFFFFA2
or gp, gp, sp
and sp, gp, gp
srai gp, sp, 0x0008
add sp, sp, ra
slti sp, ra, 0xFFFFFFF7
srli gp, ra, 0xFFFFFFFD
sll gp, ra, gp
sltu sp, sp, gp
srli gp, ra, 0x0002
ori gp, sp, 0xFFFFFF28
srl ra, gp, ra
slti gp, ra, 0x0054
or gp, ra, ra
ori sp, gp, 0x01D9
and sp, ra, ra
addi sp, gp, 0x0054
slli gp, ra, 0xFFFFFFF2
ori sp, sp, 0x0093
add gp, gp, gp
and gp, gp, gp
sltui gp, ra, 0x00DE
slli sp, gp, 0x000D
slli sp, ra, 0xFFFFFFF5
sltui sp, ra, 0xFFFFFF0E
and ra, gp, ra
add gp, sp, sp
slti ra, sp, 0x008C
srli ra, sp, 0x0000
addi sp, sp, 0x0168
slli ra, ra, 0xFFFFFFF3
addi ra, gp, 0x012A
or sp, gp, ra
add ra, sp, gp
and gp, ra, ra
slli ra, gp, 0xFFFFFFF6
or sp, gp, sp
or gp, ra, ra
ori gp, ra, 0x00EB
or sp, gp, ra
ori gp, sp, 0x01DA
andi ra, ra, 0xFFFFFFE9
addi gp, sp, 0x00C9
sltui ra, ra, 0xFFFFFF13
sltui ra, ra, 0xFFFFFF3A
sltui sp, gp, 0xFFFFFE5A
ori sp, sp, 0xFFFFFFFE
and gp, sp, gp
sltui sp, ra, 0x0034
srl gp, gp, ra
sll gp, sp, ra
ori ra, gp, 0xFFFFFEB6
sll ra, sp, ra
sra ra, gp, sp
sub ra, sp, gp
xor gp, gp, sp
sub ra, ra, sp
srl gp, gp, sp
andi ra, ra, 0xFFFFFFCB
ori ra, ra, 0xFFFFFE1B
andi ra, ra, 0xFFFFFEC8
sltui sp, gp, 0x0108
sub sp, gp, ra
slti ra, sp, 0x015D
slli sp, sp, 0x0004
xor gp, sp, ra
srl ra, gp, ra
sltui ra, ra, 0xFFFFFF3C
add sp, sp, sp
add gp, gp, ra
andi sp, sp, 0xFFFFFF3A
srli ra, sp, 0x0004
ori sp, gp, 0xFFFFFEAB
ori sp, ra, 0xFFFFFE95
slli sp, sp, 0xFFFFFFF2
xori gp, sp, 0x0040
slti gp, sp, 0xFFFFFED1
or sp, sp, sp
sltui sp, gp, 0x01B4
addi ra, gp, 0x002D
and sp, gp, gp
or ra, ra, ra
or ra, gp, ra
or ra, gp, ra
sra ra, ra, gp
sra gp, ra, sp
sub ra, sp, ra
srai ra, ra, 0x000F
sltu sp, sp, ra
slli ra, gp, 0xFFFFFFF5
slti gp, gp, 0x00E0
addi gp, ra, 0xFFFFFF72
srl ra, ra, gp
sltui gp, sp, 0xFFFFFEAA
xor sp, ra, gp
and gp, sp, ra
srli gp, gp, 0x0003
xori ra, ra, 0x01BD
sub ra, gp, sp
sll gp, ra, gp
xori ra, sp, 0x0065
or ra, sp, ra
slt sp, gp, ra
addi ra, sp, 0xFFFFFE34
slli gp, sp, 0x0007
sll ra, sp, gp
sltui gp, gp, 0xFFFFFE62
slti sp, sp, 0x0019
xori ra, gp, 0x0092
sltui gp, sp, 0xFFFFFF29
srl sp, ra, gp
xori sp, gp, 0xFFFFFF4C
add sp, ra, gp
add sp, gp, ra
sra sp, sp, gp
slli sp, ra, 0x0008
srl sp, sp, sp
add sp, gp, ra
andi sp, sp, 0x0039
sll ra, gp, sp
andi gp, ra, 0xFFFFFECC
sll sp, sp, sp
sub sp, sp, ra
srai ra, sp, 0x0008
xor gp, ra, sp
add sp, sp, sp
sub gp, ra, gp
xori gp, sp, 0x01EE
and ra, ra, ra
ori gp, ra, 0xFFFFFE96
slli ra, gp, 0x0002
srli gp, ra, 0x000D
add ra, sp, sp
andi sp, gp, 0xFFFFFEC0
andi sp, gp, 0xFFFFFE7A
xori ra, sp, 0x0169
xori gp, sp, 0xFFFFFE02
andi ra, ra, 0xFFFFFFD1
xor ra, sp, gp
xori gp, gp, 0x00AB
srl ra, ra, gp
and ra, ra, sp
xori gp, sp, 0x005D
srai sp, sp, 0x000A
addi ra, sp, 0xFFFFFE19
or sp, ra, ra
addi ra, gp, 0x0084
ori sp, sp, 0xFFFFFF3D
xor gp, ra, gp
sra ra, ra, gp
xori ra, sp, 0x0040
srai gp, gp, 0x0002
xori ra, ra, 0xFFFFFE9A
sra ra, sp, sp
ori gp, sp, 0xFFFFFFB8
sll sp, ra, ra
sll sp, ra, gp
sll gp, sp, sp
sra gp, ra, ra
srli gp, gp, 0x0001
done
#regset x1, 123
#regset x2, -40
#regset x3, 0xFFEE

View file

@ -0,0 +1,205 @@
main:
sltui gp, ra, 0x01AE
srli sp, sp, 0xFFFFFFFB
addi ra, sp, 0x0177
sub sp, ra, sp
slli sp, ra, 0x000B
add sp, gp, ra
slli gp, sp, 0x0006
ori sp, ra, 0xFFFFFF64
and gp, gp, gp
andi gp, gp, 0x0084
xori ra, ra, 0xFFFFFEB4
or sp, ra, ra
addi sp, ra, 0x0078
srli gp, sp, 0x0000
srl sp, gp, sp
andi ra, gp, 0xFFFFFFF4
srai ra, ra, 0xFFFFFFFF
sltu gp, sp, gp
or sp, ra, gp
sub ra, gp, ra
addi sp, gp, 0x017C
sltui ra, gp, 0xFFFFFF64
xori sp, gp, 0x00A1
xor ra, sp, gp
ori gp, ra, 0x00B6
add ra, ra, sp
sltui gp, ra, 0xFFFFFFEC
sltu gp, sp, ra
sll sp, ra, gp
add gp, ra, ra
or gp, ra, gp
xor sp, ra, sp
addi sp, gp, 0xFFFFFF4C
xor ra, sp, gp
xori ra, sp, 0xFFFFFF72
xori gp, sp, 0xFFFFFE95
or ra, ra, ra
slti ra, gp, 0xFFFFFE75
slli sp, sp, 0xFFFFFFFC
sltui ra, ra, 0xFFFFFE25
add sp, ra, gp
sltui gp, gp, 0xFFFFFFDB
addi sp, sp, 0x003D
sll ra, ra, sp
ori ra, ra, 0x012C
add gp, ra, gp
xori sp, sp, 0x0157
slti gp, sp, 0xFFFFFF2A
and sp, ra, ra
add gp, ra, ra
sltui ra, gp, 0xFFFFFE56
sra gp, gp, ra
xori sp, gp, 0xFFFFFF0D
sub sp, gp, ra
slti ra, ra, 0x0154
slli ra, ra, 0x000A
ori ra, gp, 0xFFFFFEC2
ori ra, sp, 0x0075
addi gp, sp, 0x0079
xor gp, ra, sp
srli ra, sp, 0xFFFFFFF8
slli gp, gp, 0x0006
sra sp, gp, gp
add sp, sp, sp
slli gp, ra, 0xFFFFFFF0
add sp, ra, sp
srai ra, sp, 0x0005
addi ra, gp, 0xFFFFFF83
xor gp, sp, ra
srli ra, ra, 0x0007
sll gp, ra, gp
xori gp, gp, 0x0163
add ra, gp, gp
add sp, ra, ra
sltu ra, ra, sp
sll sp, ra, ra
ori sp, sp, 0xFFFFFF6B
slli gp, gp, 0xFFFFFFFA
xori sp, ra, 0x00A7
add sp, ra, ra
add ra, gp, gp
addi gp, gp, 0xFFFFFFE9
sra sp, ra, gp
add gp, ra, ra
ori gp, gp, 0x0002
addi gp, gp, 0x002F
sll sp, sp, ra
srli sp, ra, 0xFFFFFFF2
ori gp, sp, 0x00EB
sra gp, ra, sp
sra sp, sp, gp
and gp, ra, ra
sra ra, ra, gp
add sp, gp, ra
srl gp, sp, gp
add ra, ra, sp
srai gp, ra, 0xFFFFFFF2
srli sp, ra, 0xFFFFFFFC
ori gp, sp, 0xFFFFFE6E
and gp, ra, ra
ori gp, ra, 0xFFFFFFAF
srl ra, ra, ra
or sp, ra, ra
ori gp, sp, 0x0018
and gp, gp, gp
slti gp, ra, 0x00C6
sll gp, sp, gp
srli gp, sp, 0xFFFFFFFA
add gp, ra, ra
add gp, ra, sp
sra sp, ra, ra
ori sp, ra, 0x0022
and gp, gp, gp
add ra, sp, ra
sll sp, gp, gp
ori gp, sp, 0x008E
slti ra, gp, 0x00B5
add sp, ra, sp
and sp, gp, gp
addi ra, sp, 0x0145
and sp, gp, gp
sll gp, ra, sp
addi sp, sp, 0xFFFFFFAF
xori sp, ra, 0xFFFFFE2C
srl gp, ra, gp
sub ra, sp, gp
add sp, ra, ra
slli sp, sp, 0x0006
sub gp, ra, sp
sltu sp, ra, gp
xori ra, ra, 0xFFFFFF9A
addi sp, sp, 0xFFFFFE12
slli ra, ra, 0xFFFFFFFD
add gp, gp, gp
xori ra, ra, 0xFFFFFED7
andi gp, gp, 0xFFFFFE05
and gp, gp, sp
addi gp, gp, 0xFFFFFEE5
slli ra, gp, 0xFFFFFFF6
sll sp, gp, gp
and ra, gp, sp
ori ra, gp, 0xFFFFFE22
srl sp, sp, gp
srli ra, sp, 0x0005
slli ra, ra, 0xFFFFFFFB
srai ra, ra, 0xFFFFFFF9
srli ra, gp, 0xFFFFFFF1
andi gp, gp, 0xFFFFFF96
sra sp, gp, gp
srai gp, gp, 0x000F
sub sp, sp, gp
sltui ra, ra, 0xFFFFFF41
and sp, sp, sp
xor gp, sp, ra
srai gp, sp, 0xFFFFFFF6
xori gp, gp, 0x00D3
or gp, sp, sp
sltu gp, ra, gp
slli ra, gp, 0x0002
or sp, gp, ra
addi ra, ra, 0x002B
addi gp, ra, 0x0035
slli sp, gp, 0x0008
addi gp, sp, 0x015E
xor ra, gp, sp
or ra, gp, ra
sll ra, gp, ra
sll gp, gp, ra
srli gp, ra, 0xFFFFFFF4
slt sp, ra, sp
sltui sp, sp, 0xFFFFFE1C
ori sp, ra, 0xFFFFFE83
andi sp, sp, 0xFFFFFEFC
addi ra, ra, 0xFFFFFF85
ori gp, ra, 0x0084
sll gp, gp, ra
xori gp, sp, 0xFFFFFF6D
sll gp, sp, gp
sra ra, sp, ra
xor ra, gp, sp
srl ra, ra, sp
srl ra, ra, sp
andi gp, ra, 0xFFFFFE7B
srai ra, sp, 0xFFFFFFF1
sub sp, sp, ra
or sp, gp, gp
slt ra, ra, gp
or gp, gp, sp
srli ra, sp, 0xFFFFFFF5
andi ra, gp, 0xFFFFFFD4
sra sp, sp, sp
add sp, ra, sp
sub gp, ra, sp
xori ra, gp, 0x0131
add sp, sp, ra
addi sp, gp, 0x0003
sll ra, ra, ra
slli gp, ra, 0x000E
andi ra, gp, 0xFFFFFE88
srai ra, gp, 0xFFFFFFFA
done
#regset x1, 123
#regset x2, -40
#regset x3, 0xFFEE

View file

@ -0,0 +1,41 @@
main:
addi x0, x1, 1
addi x0, x1, 2
addi x0, x1, 3
addi x0, x1, 7
addi x0, x1, 14
addi x0, x1, 28
addi x0, x1, 56
addi x31, x1, 1
addi x31, x1, 2
addi x31, x1, 3
addi x31, x1, 7
addi x31, x1, 14
addi x31, x1, 28
addi x31, x1, 56
addi x31, x1, 133
addi x31, x1, 258
addi x31, x1, 511
addi x31, x1, -1
addi x31, x1, -3
addi x31, x1, -9
addi x31, x1, -98
addi x31, x1, -231
addi x31, x1, -510
addi x30, x0, 1
addi x30, x30, 2
addi x30, x30, 3
addi x30, x30, 7
addi x30, x30, 14
addi x30, x30, 28
addi x30, x30, 56
addi x30, x30, 133
addi x30, x30, 258
addi x30, x30, 511
addi x30, x30, -1
addi x30, x30, -3
addi x30, x30, -9
addi x30, x30, -98
addi x30, x30, -231
addi x30, x30, -510
done

View file

@ -0,0 +1,37 @@
main:
addi x1, zero, 1
addi x2, zero, -1
addi x3, zero, 3
addi x4, zero, 7
addi x5, zero, 14
addi x6, zero, 28
addi x7, zero, 56
addi x8, zero, 133
addi x9, zero, 258
addi x10, x1, -231
addi x11, x1, -510
slti x12, x1, 1
slti x12, x1, 10
slti x12, x1, -10
sltiu x13, x1, 1
sltiu x13, x1, 10
sltiu x13, x1, -10
slti x12, x2, 1
slti x12, x2, 10
slti x12, x2, -10
sltiu x13, x2, 1
sltiu x13, x2, 10
sltiu x13, x2, -10
slli x14, x1, 16
slli x14, x2, 16
srai x14, x1, 16
srai x14, x2, 16
srli x14, x1, 16
srli x14, x2, 16
andi x15, x8, 3
andi x15, x9, -1
ori x15, x8, 3
ori x15, x9, -1
xori x15, x8, 3
xori x15, x9, -1
done

View file

@ -0,0 +1,35 @@
main:
addi x1, zero, 4
addi x2, zero, 4
addi x3, zero, 4
addi x4, zero, 4
lw x3, 0(x3)
nop
nop
lw x3, 0(x3)
nop
nop
lw x3, 0(x3)
nop
nop
lw x3, 0(x3)
nop
nop
lw x2, 0(x2)
nop
lw x2, 0(x2)
nop
lw x2, 0(x2)
nop
lw x2, 0(x2)
nop
lw x1, 0(x1)
lw x1, 0(x1)
lw x1, 0(x1)
lw x1, 0(x1)
done
#memset 0x0, 4
#memset 0x4, 8
#memset 0x8, 12
#memset 0xc, 16
#memset 0x10, 20

View file

@ -0,0 +1,20 @@
main:
addi x1, zero, 4
addi x2, zero, 4
addi x3, zero, 4
addi x4, zero, 4
lw x1, 0(x1)
add x1, x1, x1
lw x1, 0(x1)
sw x1, 4(x1)
lw x1, 4(x1)
done
#memset 0x0, 4
#memset 0x4, 8
#memset 0x8, 12
#memset 0xc, 16
#memset 0x10, 20
#memset 0x14, 20
#memset 0x18, 20
#memset 0x1c, 20
#memset 0x20, 20

View file

@ -0,0 +1,180 @@
main:
addi sp,sp,-16
sw ra,12(sp)
sw s0,8(sp)
sw s1,4(sp)
sw s2,0(sp)
lw s2,0(zero)
lw a5,0(s2)
blez a5,.L17
addi s0,s2,4
slli a5,a5,2
add s2,a5,s0
li s1,0
.L16:
addi s0,s0,4
lw a0,0(s0)
call find
add s1,s1,a0
bne s0,s2,.L16
.L14:
mv a0,s1
lw ra,12(sp)
lw s0,8(sp)
lw s1,4(sp)
lw s2,0(sp)
addi sp,sp,16
jr ra
.L17:
li s1,0
j .L14
find:
li a5,4
j .L2
.L12:
mv a0,a5
ret
.L13:
lw a5,0(a5)
slli a5,a5,1
andi a5,a5,508
addi a5,a5,4
j .L2
.L4:
bge a4,a0,.L9
lw a4,0(a5)
andi a4,a4,256
beqz a4,.L10
lw a5,0(a5)
srli a5,a5,7
andi a5,a5,508
addi a5,a5,4
.L2:
lh a4,2(a5)
beq a4,a0,.L12
ble a4,a0,.L4
lw a4,0(a5)
andi a4,a4,1
bnez a4,.L13
li a0,-1
ret
.L9:
li a0,-1
ret
.L10:
li a0,-1
ret
#memset 0x0, 0x019C
#memset 0x0004, 0x02D49D03
#memset 0x0008, 0x00912305
#memset 0x000C, 0x00301307
#memset 0x0010, 0x001B0D09
#memset 0x0014, 0x00010B00
#memset 0x0018, 0x00090000
#memset 0x001C, 0x001E110F
#memset 0x0020, 0x001D0000
#memset 0x0024, 0x001E0000
#memset 0x0028, 0x00782115
#memset 0x002C, 0x00661D17
#memset 0x0030, 0x003C1B19
#memset 0x0034, 0x00300000
#memset 0x0038, 0x00430000
#memset 0x003C, 0x00701F00
#memset 0x0040, 0x00700000
#memset 0x0044, 0x007B0000
#memset 0x0048, 0x018E5925
#memset 0x004C, 0x00A12B27
#memset 0x0050, 0x009F0029
#memset 0x0054, 0x00910000
#memset 0x0058, 0x011D392D
#memset 0x005C, 0x00E22F00
#memset 0x0060, 0x01190031
#memset 0x0064, 0x01090033
#memset 0x0068, 0x00E93500
#memset 0x006C, 0x00FF3700
#memset 0x0070, 0x00FF0000
#memset 0x0074, 0x01213F3B
#memset 0x0078, 0x0120003D
#memset 0x007C, 0x011F0000
#memset 0x0080, 0x01835741
#memset 0x0084, 0x016A5543
#memset 0x0088, 0x012F4745
#memset 0x008C, 0x012E0000
#memset 0x0090, 0x014B4F49
#memset 0x0094, 0x013A4B00
#memset 0x0098, 0x01424D00
#memset 0x009C, 0x01460000
#memset 0x00A0, 0x015C0051
#memset 0x00A4, 0x014D5300
#memset 0x00A8, 0x01510000
#memset 0x00AC, 0x01730000
#memset 0x00B0, 0x018B0000
#memset 0x00B4, 0x01BF655B
#memset 0x00B8, 0x01A2615D
#memset 0x00BC, 0x01995F00
#memset 0x00C0, 0x019F0000
#memset 0x00C4, 0x01A46300
#memset 0x00C8, 0x01BD0000
#memset 0x00CC, 0x027C8967
#memset 0x00D0, 0x026C8569
#memset 0x00D4, 0x01CC6D6B
#memset 0x00D8, 0x01C60000
#memset 0x00DC, 0x021F7D6F
#memset 0x00E0, 0x02070071
#memset 0x00E4, 0x01D37300
#memset 0x00E8, 0x01F67B75
#memset 0x00EC, 0x01EF7977
#memset 0x00F0, 0x01D70000
#memset 0x00F4, 0x01F10000
#memset 0x00F8, 0x02060000
#memset 0x00FC, 0x0254837F
#memset 0x0100, 0x023D0081
#memset 0x0104, 0x02200000
#memset 0x0108, 0x02640000
#memset 0x010C, 0x026D8700
#memset 0x0110, 0x026E0000
#memset 0x0114, 0x02C0008B
#memset 0x0118, 0x0297998D
#memset 0x011C, 0x0289978F
#memset 0x0120, 0x02839591
#memset 0x0124, 0x027C9300
#memset 0x0128, 0x027E0000
#memset 0x012C, 0x02850000
#memset 0x0130, 0x028D0000
#memset 0x0134, 0x029E009B
#memset 0x0138, 0x02990000
#memset 0x013C, 0x03D4C99F
#memset 0x0140, 0x0332ADA1
#memset 0x0144, 0x02E9A300
#memset 0x0148, 0x031AABA5
#memset 0x014C, 0x0305A9A7
#memset 0x0150, 0x02EC0000
#memset 0x0154, 0x03090000
#memset 0x0158, 0x032B0000
#memset 0x015C, 0x03CC00AF
#memset 0x0160, 0x0365B7B1
#memset 0x0164, 0x0333B300
#memset 0x0168, 0x036200B5
#memset 0x016C, 0x033E0000
#memset 0x0170, 0x03B6C3B9
#memset 0x0174, 0x03AA00BB
#memset 0x0178, 0x039700BD
#memset 0x017C, 0x037DC1BF
#memset 0x0180, 0x03750000
#memset 0x0184, 0x03870000
#memset 0x0188, 0x03C8C7C5
#memset 0x018C, 0x03BB0000
#memset 0x0190, 0x03C90000
#memset 0x0194, 0x03E0CB00
#memset 0x0198, 0x03E40000
#memset 0x019C, 0x0010
#memset 0x01A0, 0x0264
#memset 0x01A4, 0x0C0D
#memset 0x01A8, 0x0031
#memset 0x01AC, 0x0206
#memset 0x01B0, 0x0891
#memset 0x01B4, 0x0043
#memset 0x01B8, 0x029E
#memset 0x01BC, 0x0264
#memset 0x01C0, 0x0123
#memset 0x01C4, 0x0264

View file

@ -0,0 +1,142 @@
main:
addi sp,sp,-16
sw ra,12(sp)
lw a0,0(zero)
call find
lw ra,12(sp)
addi sp,sp,16
jr ra
find:
li a5,4
.L2:
lh a4,2(a5)
beq a4,a0,.L13
.L11:
ble a4,a0,.L4
lw a5,0(a5)
andi a4,a5,1
bnez a4,.L14
.L10:
li a0,-1
ret
.L4:
bge a4,a0,.L10
lw a4,0(a5)
srli a5,a4,7
andi a4,a4,256
andi a5,a5,508
beqz a4,.L10
addi a5,a5,4
lh a4,2(a5)
bne a4,a0,.L11
.L13:
mv a0,a5
ret
.L14:
slli a5,a5,1
andi a5,a5,508
addi a5,a5,4
j .L2
#memset 0x0, 0x013A
#memset 0x0004, 0x02D49D03
#memset 0x0008, 0x00912305
#memset 0x000C, 0x00301307
#memset 0x0010, 0x001B0D09
#memset 0x0014, 0x00010B00
#memset 0x0018, 0x00090000
#memset 0x001C, 0x001E110F
#memset 0x0020, 0x001D0000
#memset 0x0024, 0x001E0000
#memset 0x0028, 0x00782115
#memset 0x002C, 0x00661D17
#memset 0x0030, 0x003C1B19
#memset 0x0034, 0x00300000
#memset 0x0038, 0x00430000
#memset 0x003C, 0x00701F00
#memset 0x0040, 0x00700000
#memset 0x0044, 0x007B0000
#memset 0x0048, 0x018E5925
#memset 0x004C, 0x00A12B27
#memset 0x0050, 0x009F0029
#memset 0x0054, 0x00910000
#memset 0x0058, 0x011D392D
#memset 0x005C, 0x00E22F00
#memset 0x0060, 0x01190031
#memset 0x0064, 0x01090033
#memset 0x0068, 0x00E93500
#memset 0x006C, 0x00FF3700
#memset 0x0070, 0x00FF0000
#memset 0x0074, 0x01213F3B
#memset 0x0078, 0x0120003D
#memset 0x007C, 0x011F0000
#memset 0x0080, 0x01835741
#memset 0x0084, 0x016A5543
#memset 0x0088, 0x012F4745
#memset 0x008C, 0x012E0000
#memset 0x0090, 0x014B4F49
#memset 0x0094, 0x013A4B00
#memset 0x0098, 0x01424D00
#memset 0x009C, 0x01460000
#memset 0x00A0, 0x015C0051
#memset 0x00A4, 0x014D5300
#memset 0x00A8, 0x01510000
#memset 0x00AC, 0x01730000
#memset 0x00B0, 0x018B0000
#memset 0x00B4, 0x01BF655B
#memset 0x00B8, 0x01A2615D
#memset 0x00BC, 0x01995F00
#memset 0x00C0, 0x019F0000
#memset 0x00C4, 0x01A46300
#memset 0x00C8, 0x01BD0000
#memset 0x00CC, 0x027C8967
#memset 0x00D0, 0x026C8569
#memset 0x00D4, 0x01CC6D6B
#memset 0x00D8, 0x01C60000
#memset 0x00DC, 0x021F7D6F
#memset 0x00E0, 0x02070071
#memset 0x00E4, 0x01D37300
#memset 0x00E8, 0x01F67B75
#memset 0x00EC, 0x01EF7977
#memset 0x00F0, 0x01D70000
#memset 0x00F4, 0x01F10000
#memset 0x00F8, 0x02060000
#memset 0x00FC, 0x0254837F
#memset 0x0100, 0x023D0081
#memset 0x0104, 0x02200000
#memset 0x0108, 0x02640000
#memset 0x010C, 0x026D8700
#memset 0x0110, 0x026E0000
#memset 0x0114, 0x02C0008B
#memset 0x0118, 0x0297998D
#memset 0x011C, 0x0289978F
#memset 0x0120, 0x02839591
#memset 0x0124, 0x027C9300
#memset 0x0128, 0x027E0000
#memset 0x012C, 0x02850000
#memset 0x0130, 0x028D0000
#memset 0x0134, 0x029E009B
#memset 0x0138, 0x02990000
#memset 0x013C, 0x03D4C99F
#memset 0x0140, 0x0332ADA1
#memset 0x0144, 0x02E9A300
#memset 0x0148, 0x031AABA5
#memset 0x014C, 0x0305A9A7
#memset 0x0150, 0x02EC0000
#memset 0x0154, 0x03090000
#memset 0x0158, 0x032B0000
#memset 0x015C, 0x03CC00AF
#memset 0x0160, 0x0365B7B1
#memset 0x0164, 0x0333B300
#memset 0x0168, 0x036200B5
#memset 0x016C, 0x033E0000
#memset 0x0170, 0x03B6C3B9
#memset 0x0174, 0x03AA00BB
#memset 0x0178, 0x039700BD
#memset 0x017C, 0x037DC1BF
#memset 0x0180, 0x03750000
#memset 0x0184, 0x03870000
#memset 0x0188, 0x03C8C7C5
#memset 0x018C, 0x03BB0000
#memset 0x0190, 0x03C90000
#memset 0x0194, 0x03E0CB00
#memset 0x0198, 0x03E40000

View file

@ -0,0 +1,14 @@
main:
add t0, t0, t1
add t2, t0, t1
add zero, t0, t1
add t2, t2, t1
add t3, t3, t3
add t3, t3, t3
add t3, t3, t3
nop
done
#regset t0,10
#regset t1,23
#regset t2,43
#regset t3,-11

View file

@ -0,0 +1,118 @@
main:
addi sp,sp,-32
sw ra,28(sp)
sw s0,24(sp)
addi s0,sp,32
sw zero,-20(s0)
li a5,100
sw a5,-24(s0)
lw a1,-20(s0)
li a0,11
call setupmem
lw a1,-24(s0)
li a0,11
call setupmem
lw a2,-24(s0)
lw a1,-20(s0)
li a0,10
call f
li a5,0
mv a0,a5
lw ra,28(sp)
lw s0,24(sp)
addi sp,sp,32
jr ra
f:
addi sp,sp,-48
sw ra,44(sp)
sw s0,40(sp)
sw s1,36(sp)
addi s0,sp,48
sw a0,-36(s0)
sw a1,-40(s0)
sw a2,-44(s0)
lw a5,-36(s0)
slli a5,a5,2
lw a4,-40(s0)
add a5,a4,a5
lw a5,0(a5)
beqz a5,.L2
lw a5,-36(s0)
slli a5,a5,2
lw a4,-44(s0)
add a5,a4,a5
lw a5,0(a5)
j .L3
.L2:
lw a5,-36(s0)
bnez a5,.L4
li a5,0
j .L3
.L4:
lw a4,-36(s0)
li a5,1
bne a4,a5,.L5
li a5,1
j .L3
.L5:
lw a5,-36(s0)
addi a5,a5,-1
lw a2,-44(s0)
lw a1,-40(s0)
mv a0,a5
call f
mv s1,a0
lw a5,-36(s0)
addi a5,a5,-2
lw a2,-44(s0)
lw a1,-40(s0)
mv a0,a5
call f
mv a5,a0
add a5,s1,a5
sw a5,-20(s0)
lw a5,-36(s0)
slli a5,a5,2
lw a4,-40(s0)
add a5,a4,a5
li a4,1
sw a4,0(a5)
lw a5,-36(s0)
slli a5,a5,2
lw a4,-44(s0)
add a5,a4,a5
lw a4,-20(s0)
sw a4,0(a5)
lw a5,-20(s0)
.L3:
mv a0,a5
lw ra,44(sp)
lw s0,40(sp)
lw s1,36(sp)
addi sp,sp,48
jr ra
setupmem:
addi sp,sp,-48
sw s0,44(sp)
addi s0,sp,48
sw a0,-36(s0)
sw a1,-40(s0)
sw zero,-20(s0)
j .L7
.L8:
lw a5,-20(s0)
slli a5,a5,2
lw a4,-40(s0)
add a5,a4,a5
sw zero,0(a5)
lw a5,-20(s0)
addi a5,a5,1
sw a5,-20(s0)
.L7:
lw a4,-20(s0)
lw a5,-36(s0)
blt a4,a5,.L8
nop
lw s0,44(sp)
addi sp,sp,48
jr ra

View file

@ -0,0 +1,49 @@
main:
addi sp,sp,-16
sw ra,12(sp)
sw s0,8(sp)
addi s0,sp,16
li a0,6
call f
mv a5,a0
mv a0,a5
lw ra,12(sp)
lw s0,8(sp)
addi sp,sp,16
jr ra
f:
addi sp,sp,-32
sw ra,28(sp)
sw s0,24(sp)
sw s1,20(sp)
addi s0,sp,32
sw a0,-20(s0)
lw a5,-20(s0)
bnez a5,.L2
li a5,0
j .L3
.L2:
lw a4,-20(s0)
li a5,1
bne a4,a5,.L4
li a5,1
j .L3
.L4:
lw a5,-20(s0)
addi a5,a5,-1
mv a0,a5
call f
mv s1,a0
lw a5,-20(s0)
addi a5,a5,-2
mv a0,a5
call f
mv a5,a0
add a5,s1,a5
.L3:
mv a0,a5
lw ra,28(sp)
lw s0,24(sp)
lw s1,20(sp)
addi sp,sp,32
jr ra

View file

@ -0,0 +1,112 @@
main:
addi sp,sp,-32
sw ra,28(sp)
sw s0,24(sp)
addi s0,sp,32
sw zero,-20(s0)
li a5,32
sw a5,-24(s0)
li a2,7
li a1,0
lw a0,-20(s0)
call isPalindrome
.DEBUG_call1_return:
mv a5,a0
beqz a5,.L2
li a2,15
li a1,0
lw a0,-24(s0)
call isPalindrome
.DEBUG_call2_return:
mv a5,a0
beqz a5,.L2
li a5,1
j .L4
.L2:
li a5,0
.L4:
mv a0,a5
lw ra,28(sp)
lw s0,24(sp)
addi sp,sp,32
jr ra
isPalindrome:
addi sp,sp,-48
sw ra,44(sp)
sw s0,40(sp)
addi s0,sp,48
sw a0,-36(s0)
sw a1,-40(s0)
sw a2,-44(s0)
lw a4,-40(s0)
lw a5,-44(s0)
blt a4,a5,.L6
li a5,1
j .L7
.L6:
lw a5,-40(s0)
slli a5,a5,2
lw a4,-36(s0)
add a5,a4,a5
lw a4,0(a5)
lw a5,-44(s0)
slli a5,a5,2
lw a3,-36(s0)
add a5,a3,a5
lw a5,0(a5)
sub a5,a4,a5
seqz a5,a5
andi a5,a5,0xff
sw a5,-20(s0)
lw a5,-20(s0)
beqz a5,.CompareFailed
lw a5,-40(s0)
addi a4,a5,1
lw a5,-44(s0)
addi a5,a5,-1
mv a2,a5
mv a1,a4
lw a0,-36(s0)
call isPalindrome
mv a5,a0
beqz a5,.CompareFailed
li a5,1
j .L7
.CompareFailed:
li a5,0
.L7:
mv a0,a5
lw ra,44(sp)
lw s0,40(sp)
addi sp,sp,48
jr ra
#memset 0, 10
#memset 4, -3
#memset 8, 8
#memset 12, 0
#memset 16, 0
#memset 20, 8
#memset 24, -3
#memset 28, 10
#memset 32, 10
#memset 36, -3
#memset 40, 8
#memset 44, 0
#memset 48, 0
#memset 52, 10
#memset 56, -3
#memset 60, 8
#memset 64, -3
#memset 68, 8
#memset 72, 10
#memset 76, 0
#memset 80, 0
#memset 84, 8
#memset 88, -3
#memset 92, 10

View file

@ -0,0 +1,120 @@
main:
addi sp,sp,-16
li a2,7
li a1,0
li a0,0
sw ra,12(sp)
call isPalindrome.part.0
.DEBUG_call1_return:
bnez a0,.L17
isPalindrome.part.0:
slli a4,a1,2
slli a3,a2,2
add a4,a0,a4
add a5,a0,a3
lw a4,0(a4)
lw a5,0(a5)
beq a4,a5,.L10
li a5,0
.L6:
mv a0,a5
ret
.L10:
addi a1,a1,1
addi a2,a2,-1
li a5,1
bge a1,a2,.L6
addi sp,sp,-16
sw ra,12(sp)
call isPalindrome.part.0
.DEBUG_call2_return:
lw ra,12(sp)
snez a5,a0
mv a0,a5
addi sp,sp,16
jr ra
.L11:
lw ra,12(sp)
addi sp,sp,16
jr ra
.L17:
li a2,15
li a1,0
li a0,32
call isPalindrome.part.0
snez a0,a0
j .L11
isPalindrome:
bge a1,a2,.L20
slli a3,a2,2
slli a4,a1,2
add a5,a0,a3
add a4,a0,a4
lw a7,0(a4)
lw a6,0(a5)
li a3,0
bne a7,a6,.L28
addi a7,a1,1
addi a6,a2,-1
li a3,1
bge a7,a6,.L28
lw a7,4(a4)
lw a6,-4(a5)
li a3,0
bne a7,a6,.L28
addi a7,a1,2
addi a6,a2,-2
li a3,1
bge a7,a6,.L28
lw a4,8(a4)
lw a5,-8(a5)
li a3,0
bne a4,a5,.L28
addi a1,a1,3
addi a2,a2,-3
li a3,1
bge a1,a2,.L28
addi sp,sp,-16
sw ra,12(sp)
call isPalindrome.part.0
lw ra,12(sp)
snez a3,a0
mv a0,a3
addi sp,sp,16
jr ra
.L20:
li a3,1
.L28:
mv a0,a3
ret
#memset 0, 10
#memset 4, -3
#memset 8, 8
#memset 12, 0
#memset 16, 0
#memset 20, 8
#memset 24, -3
#memset 28, 10
#memset 32, 10
#memset 36, -3
#memset 40, 8
#memset 44, 0
#memset 48, 0
#memset 52, 10
#memset 56, -3
#memset 60, 8
#memset 64, -3
#memset 68, 8
#memset 72, 10
#memset 76, 0
#memset 80, 0
#memset 84, 8
#memset 88, -3
#memset 92, 10

View file

@ -0,0 +1,187 @@
main:
addi sp,sp,-32
sw ra,28(sp)
sw s0,24(sp)
addi s0,sp,32
li a5,0
lw a5,0(a5)
sw a5,-20(s0)
lw a0,-20(s0)
call find
mv a5,a0
mv a0,a5
lw ra,28(sp)
lw s0,24(sp)
addi sp,sp,32
jr ra
find:
addi sp,sp,-64
sw s0,60(sp)
addi s0,sp,64
sw a0,-52(s0)
sw zero,-24(s0)
li a5,4
sw a5,-20(s0)
sw zero,-28(s0)
j .L2
.WHILE:
lw a5,-20(s0)
lh a5,2(a5)
sw a5,-28(s0)
lw a4,-28(s0)
lw a5,-52(s0)
bne a4,a5,.CHECKLEFT
lw a5,-20(s0)
j .L1
.CHECKLEFT:
lw a4,-28(s0)
lw a5,-52(s0)
ble a4,a5,.CHECKRIGHT
lw a5,-20(s0)
lw a5,0(a5)
andi a5,a5,1
beqz a5,.CHECKRIGHT
lw a5,-20(s0)
lw a5,0(a5)
srli a5,a5,1
andi a5,a5,127
andi a5,a5,0xff
sw a5,-32(s0)
lw a5,-32(s0)
slli a5,a5,2
addi a5,a5,4
sw a5,-20(s0)
j .L2
.CHECKRIGHT:
lw a4,-28(s0)
lw a5,-52(s0)
bge a4,a5,.L6
lw a5,-20(s0)
lw a5,0(a5)
andi a5,a5,256
beqz a5,.L6
lw a5,-20(s0)
lw a5,0(a5)
srli a5,a5,9
andi a5,a5,127
andi a5,a5,0xff
sw a5,-36(s0)
lw a5,-36(s0)
slli a5,a5,2
addi a5,a5,4
sw a5,-20(s0)
j .L2
.L6:
li a5,-1
j .L1
.L2:
lw a5,-24(s0)
beqz a5,.WHILE
.L1:
mv a0,a5
lw s0,60(sp)
addi sp,sp,64
jr ra
#memset 0x0, 0x013A
#memset 0x0004, 0x02D49D03
#memset 0x0008, 0x00912305
#memset 0x000C, 0x00301307
#memset 0x0010, 0x001B0D09
#memset 0x0014, 0x00010B00
#memset 0x0018, 0x00090000
#memset 0x001C, 0x001E110F
#memset 0x0020, 0x001D0000
#memset 0x0024, 0x001E0000
#memset 0x0028, 0x00782115
#memset 0x002C, 0x00661D17
#memset 0x0030, 0x003C1B19
#memset 0x0034, 0x00300000
#memset 0x0038, 0x00430000
#memset 0x003C, 0x00701F00
#memset 0x0040, 0x00700000
#memset 0x0044, 0x007B0000
#memset 0x0048, 0x018E5925
#memset 0x004C, 0x00A12B27
#memset 0x0050, 0x009F0029
#memset 0x0054, 0x00910000
#memset 0x0058, 0x011D392D
#memset 0x005C, 0x00E22F00
#memset 0x0060, 0x01190031
#memset 0x0064, 0x01090033
#memset 0x0068, 0x00E93500
#memset 0x006C, 0x00FF3700
#memset 0x0070, 0x00FF0000
#memset 0x0074, 0x01213F3B
#memset 0x0078, 0x0120003D
#memset 0x007C, 0x011F0000
#memset 0x0080, 0x01835741
#memset 0x0084, 0x016A5543
#memset 0x0088, 0x012F4745
#memset 0x008C, 0x012E0000
#memset 0x0090, 0x014B4F49
#memset 0x0094, 0x013A4B00
#memset 0x0098, 0x01424D00
#memset 0x009C, 0x01460000
#memset 0x00A0, 0x015C0051
#memset 0x00A4, 0x014D5300
#memset 0x00A8, 0x01510000
#memset 0x00AC, 0x01730000
#memset 0x00B0, 0x018B0000
#memset 0x00B4, 0x01BF655B
#memset 0x00B8, 0x01A2615D
#memset 0x00BC, 0x01995F00
#memset 0x00C0, 0x019F0000
#memset 0x00C4, 0x01A46300
#memset 0x00C8, 0x01BD0000
#memset 0x00CC, 0x027C8967
#memset 0x00D0, 0x026C8569
#memset 0x00D4, 0x01CC6D6B
#memset 0x00D8, 0x01C60000
#memset 0x00DC, 0x021F7D6F
#memset 0x00E0, 0x02070071
#memset 0x00E4, 0x01D37300
#memset 0x00E8, 0x01F67B75
#memset 0x00EC, 0x01EF7977
#memset 0x00F0, 0x01D70000
#memset 0x00F4, 0x01F10000
#memset 0x00F8, 0x02060000
#memset 0x00FC, 0x0254837F
#memset 0x0100, 0x023D0081
#memset 0x0104, 0x02200000
#memset 0x0108, 0x02640000
#memset 0x010C, 0x026D8700
#memset 0x0110, 0x026E0000
#memset 0x0114, 0x02C0008B
#memset 0x0118, 0x0297998D
#memset 0x011C, 0x0289978F
#memset 0x0120, 0x02839591
#memset 0x0124, 0x027C9300
#memset 0x0128, 0x027E0000
#memset 0x012C, 0x02850000
#memset 0x0130, 0x028D0000
#memset 0x0134, 0x029E009B
#memset 0x0138, 0x02990000
#memset 0x013C, 0x03D4C99F
#memset 0x0140, 0x0332ADA1
#memset 0x0144, 0x02E9A300
#memset 0x0148, 0x031AABA5
#memset 0x014C, 0x0305A9A7
#memset 0x0150, 0x02EC0000
#memset 0x0154, 0x03090000
#memset 0x0158, 0x032B0000
#memset 0x015C, 0x03CC00AF
#memset 0x0160, 0x0365B7B1
#memset 0x0164, 0x0333B300
#memset 0x0168, 0x036200B5
#memset 0x016C, 0x033E0000
#memset 0x0170, 0x03B6C3B9
#memset 0x0174, 0x03AA00BB
#memset 0x0178, 0x039700BD
#memset 0x017C, 0x037DC1BF
#memset 0x0180, 0x03750000
#memset 0x0184, 0x03870000
#memset 0x0188, 0x03C8C7C5
#memset 0x018C, 0x03BB0000
#memset 0x0190, 0x03C90000
#memset 0x0194, 0x03E0CB00
#memset 0x0198, 0x03E40000

View file

@ -0,0 +1,38 @@
#include <stdio.h>
// C rmsbolt starter file
// Local Variables:
// rmsbolt-command: "/opt/riscv/bin/riscv32-unknown-elf-gcc -O3"
// rmsbolt-disassemble: nil
// End:
int f(int x, int* isMemoized, int* memoizedVal){
if(isMemoized[x])
return memoizedVal[x];
if (x == 0) return 0;
if (x == 1) return 1;
int next = f(x-1, isMemoized, memoizedVal) + f(x-2, isMemoized, memoizedVal);
isMemoized[x] = 1;
memoizedVal[x] = next;
return next;
}
void setupmem(int n, int* m) {
for(int ii = 0; ii < n; ii++){
m[ii] = 0;
}
}
int main() {
int* isMemoized = (int*)0;
int* memoizedVal = (int*)100;
setupmem(11, isMemoized);
setupmem(11, memoizedVal);
int r = f(10, isMemoized, memoizedVal);
return r;
}

View file

@ -0,0 +1,20 @@
#include <stdio.h>
// C rmsbolt starter file
// Local Variables:
// rmsbolt-command: "/opt/riscv/bin/riscv32-unknown-elf-gcc -O0"
// rmsbolt-disassemble: nil
// End:
int f(int x){
if (x == 0) return 0;
if (x == 1) return 1;
return f(x-1) + f(x-2);
}
int main() {
return f(4);
}

View file

@ -0,0 +1,28 @@
// C rmsbolt starter file
// Local Variables:
// rmsbolt-command: "/opt/riscv/bin/riscv32-unknown-elf-gcc -O3"
// rmsbolt-disassemble: nil
// End:
int main() {
/* int palindrome[8]; */
/* int notAPalindrome[16]; */
// Set up "heap" addresses
int palindrome = (int*)0;
int notAPalindrome = (int*)32;
return isPalindrome(palindrome, 0, 7) && isPalindrome(notAPalindrome, 0, 15);
}
int isPalindrome(int* word, int start, int stop){
if(start >= stop){
return 1;
}
else{
int currentIsPalindrome = (word[start] == word[stop]);
return currentIsPalindrome && isPalindrome(word, start + 1, stop - 1);
}
}

View file

@ -0,0 +1,50 @@
// C rmsbolt starter file
// Local Variables:
// rmsbolt-command: "/opt/riscv/bin/riscv32-unknown-elf-gcc -O3"
// rmsbolt-disassemble: nil
// End:
/**
* Represents a binary tree
*/
typedef struct {
unsigned int hasLeft : 1;
unsigned int leftIndex : 7;
unsigned int hasRight : 1;
unsigned int rightIndex : 7;
int value : 16;
} node;
int find(int findMe){
int found = 0;
node* currentNodeIdx = (node*)4;
int currentValue = 0;
while(!found){
currentValue = currentNodeIdx->value;
if(currentValue == findMe){
return (int)currentNodeIdx;
}
if((currentValue > findMe) && currentNodeIdx->hasLeft){
int nextNodeIdx = currentNodeIdx->leftIndex;
currentNodeIdx = (node*)(4 + (nextNodeIdx << 2));
continue;
}
if((currentValue < findMe) && currentNodeIdx->hasRight){
int nextNodeIdx = currentNodeIdx->rightIndex;
currentNodeIdx = (node*)(4 + (nextNodeIdx << 2));
continue;
}
return -1;
}
}
int main() {
int needle = *(int*)0;
return find(needle);
}

View file

@ -0,0 +1,64 @@
// C rmsbolt starter file
// Local Variables:
// rmsbolt-command: "/opt/riscv/bin/riscv32-unknown-elf-gcc -O1"
// rmsbolt-disassemble: nil
// End:
/**
* Represents a binary tree
*/
typedef struct {
unsigned int hasLeft : 1;
unsigned int leftIndex : 7;
unsigned int hasRight : 1;
unsigned int rightIndex : 7;
int value : 16;
} node;
int find(int findMe){
int found = 0;
node* currentNodeIdx = (node*)4;
int currentValue = 0;
while(!found){
currentValue = currentNodeIdx->value;
if(currentValue == findMe){
return (int)currentNodeIdx;
}
if((currentValue > findMe) && currentNodeIdx->hasLeft){
int nextNodeIdx = currentNodeIdx->leftIndex;
currentNodeIdx = (node*)(4 + (nextNodeIdx << 2));
continue;
}
if((currentValue < findMe) && currentNodeIdx->hasRight){
int nextNodeIdx = currentNodeIdx->rightIndex;
currentNodeIdx = (node*)(4 + (nextNodeIdx << 2));
continue;
}
return -1;
}
}
int main() {
// Where does the needle list start?
int needles = *(int*)0;
int sum = 0;
// How many needles are there?
int numNeedles = *(int*)needles;
int nextNeedle = (int)needles + 4;
// Some useless calculations to make gcc O3 happy
for(int ii = 0; ii < numNeedles; ii++){
nextNeedle += 4;
int needle = *(int*)(nextNeedle);
sum += find(needle);
}
return sum;
}

View file

@ -0,0 +1,35 @@
#include <stdio.h>
// C rmsbolt starter file
// Local Variables:
// rmsbolt-command: "/opt/riscv/bin/riscv32-unknown-elf-gcc -O0"
// rmsbolt-disassemble: nil
// End:
int mul(int a, int b) {
int c = 0;
int ii = 0;
for(int ii = 0; ii < a; ii++){
c += b;
}
return c;
}
int square(int a){
return mul(a, a);
}
int main() {
int a = 6;
int b = 0xFFFFFFFE; // MAXVAL - 2, (a + b) = -2
int c = -1; //-1
int d = 7; //0x4D2 (c + d) = 0x4D1
if(square(a+b) > square(c + d))
return a;
else
return c;
}

View file

@ -0,0 +1,80 @@
main:
addi sp,sp,-32
sw ra,28(sp)
sw s0,24(sp)
sw s1,20(sp)
addi s0,sp,32
li a5,6
sw a5,-20(s0)
li a5,-2
sw a5,-24(s0)
li a5,-1
sw a5,-28(s0)
li a5,7
sw a5,-32(s0)
lw a4,-20(s0)
lw a5,-24(s0)
add a5,a4,a5
mv a0,a5
call square
mv s1,a0
lw a4,-28(s0)
lw a5,-32(s0)
add a5,a4,a5
mv a0,a5
call square
mv a5,a0
ble s1,a5,.L8
lw a5,-20(s0)
j .L9
.L8:
lw a5,-28(s0)
.L9:
mv a0,a5
lw ra,28(sp)
lw s0,24(sp)
lw s1,20(sp)
addi sp,sp,32
jr ra
mul:
addi sp,sp,-48
sw s0,44(sp)
addi s0,sp,48
sw a0,-36(s0)
sw a1,-40(s0)
sw zero,-20(s0)
sw zero,-28(s0)
sw zero,-24(s0)
j .L2
.L3:
lw a4,-20(s0)
lw a5,-40(s0)
add a5,a4,a5
sw a5,-20(s0)
lw a5,-24(s0)
addi a5,a5,1
sw a5,-24(s0)
.L2:
lw a4,-24(s0)
lw a5,-36(s0)
blt a4,a5,.L3
lw a5,-20(s0)
mv a0,a5
lw s0,44(sp)
addi sp,sp,48
jr ra
square:
addi sp,sp,-32
sw ra,28(sp)
sw s0,24(sp)
addi s0,sp,32
sw a0,-20(s0)
lw a1,-20(s0)
lw a0,-20(s0)
call mul
mv a5,a0
mv a0,a5
lw ra,28(sp)
lw s0,24(sp)
addi sp,sp,32
jr ra