Skip to content

Commit 6e70538

Browse files
committed
fix: comment instruction branch formatting hack, fix riscv asm
1 parent c0d863b commit 6e70538

3 files changed

Lines changed: 35 additions & 31 deletions

File tree

src/instruction.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -658,6 +658,10 @@ impl Into<String> for ArmInstruction {
658658
ArmInstruction::B { target } => {
659659
format!("b {}", target)
660660
}
661+
// TODO: Fix these branching instructions need to map to
662+
// multiple instructions. Would be better separation of concerns
663+
// if this was produced by the translation function instead of a
664+
// hack in the string formatting.
661665
ArmInstruction::Ble { arg1, arg2, target } => {
662666
format!("cmp {}, {}\nble {}", arg1, arg2, target)
663667
}

tests/fib/fib.riscv.s

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
; int main() {
2-
; int i;
3-
; int a[10] = {};
4-
; a[1] = 1;
5-
; for (i = 2; i < 10; i++) {
6-
; a[i] = a[i-1] + a[i-2];
7-
; }
8-
; return a[9];
9-
; }
1+
# int main() {
2+
# int i;
3+
# int a[10] = {};
4+
# a[1] = 1;
5+
# for (i = 2; i < 10; i++) {
6+
# a[i] = a[i-1] + a[i-2];
7+
# }
8+
# return a[9];
9+
# }
1010

1111
main:
1212
addi sp,sp,-64

tests/prime/prime.riscv.s

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
1-
; int is_prime(int n) {
2-
; if (n <= 1) {
3-
; return 0;
4-
; }
5-
; for (int i = 2; i < n; i++) {
6-
; int temp = n - i;
7-
; while (temp >= i) {
8-
; temp = temp - i;
9-
; }
10-
; if (temp == 0) {
11-
; // i divides n
12-
; return 0;
13-
; }
14-
; }
15-
; return 1;
16-
; }
17-
; int main(void) {
18-
; return is_prime(4093);
19-
; }
1+
# int is_prime(int n) {
2+
# if (n <= 1) {
3+
# return 0;
4+
# }
5+
# for (int i = 2; i < n; i++) {
6+
# int temp = n - i;
7+
# while (temp >= i) {
8+
# temp = temp - i;
9+
# }
10+
# if (temp == 0) {
11+
# // i divides n
12+
# return 0;
13+
# }
14+
# }
15+
# return 1;
16+
# }
17+
# int main(void) {
18+
# return is_prime(4093);
19+
# }
2020

21-
is_prime(int):
21+
is_prime: # is_prime(int):
2222
addi sp,sp,-48
2323
sd s0,40(sp)
2424
addi s0,sp,48
@@ -82,11 +82,11 @@ sd ra,8(sp)
8282
sd s0,0(sp)
8383
addi s0,sp,16
8484
li a0,4093
85-
call is_prime(int)
85+
call is_prime
8686
mv a5,a0
8787
nop
8888
mv a0,a5
8989
ld ra,8(sp)
9090
ld s0,0(sp)
9191
addi sp,sp,16
92-
jr ra
92+
jr ra

0 commit comments

Comments
 (0)