automated commit TP1
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
.globl main
|
||||
main:
|
||||
addi a0, a0, 1
|
||||
bne a0, a0, main
|
||||
end:
|
||||
ret
|
||||
@@ -0,0 +1,14 @@
|
||||
.globl main
|
||||
main:
|
||||
addi sp,sp,-16
|
||||
sd ra,8(sp)
|
||||
## TODO Your assembly code there
|
||||
## END TODO End of user assembly code
|
||||
ld ra,8(sp)
|
||||
addi sp,sp,16
|
||||
ret
|
||||
|
||||
# Data comes here
|
||||
.section .data
|
||||
mydata:
|
||||
.dword 7
|
||||
@@ -0,0 +1,15 @@
|
||||
.text
|
||||
.globl main
|
||||
main:
|
||||
addi sp,sp,-16
|
||||
sd ra,8(sp)
|
||||
## TODO Your assembly code there
|
||||
## END TODO End of user assembly code
|
||||
ld ra,8(sp)
|
||||
addi sp,sp,16
|
||||
ret
|
||||
|
||||
# Data comes here
|
||||
.section .data
|
||||
mydata:
|
||||
.dword 7
|
||||
@@ -0,0 +1,12 @@
|
||||
/*Source code from Laure Gonnord, CAP Lab 1*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
int main(){
|
||||
|
||||
int x = 41;
|
||||
x = x+1;
|
||||
printf("%d\n",x);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -0,0 +1,249 @@
|
||||
.globl println_int
|
||||
println_int:
|
||||
addi sp,sp,-8
|
||||
sd ra, 0(sp)
|
||||
call print_int
|
||||
call newline
|
||||
ld ra, 0(sp)
|
||||
addi sp,sp,8
|
||||
ret
|
||||
|
||||
.globl println_char
|
||||
println_char:
|
||||
addi sp,sp,-8
|
||||
sd ra, 0(sp)
|
||||
call print_char
|
||||
call newline
|
||||
ld ra, 0(sp)
|
||||
addi sp,sp,8
|
||||
ret
|
||||
|
||||
.text
|
||||
.align 1
|
||||
.globl println_string
|
||||
.type println_string, @function
|
||||
println_string: #address stored in a0
|
||||
addi sp,sp,-152
|
||||
sd ra,24(sp)
|
||||
sd s0,16(sp)
|
||||
addi s0,sp,32
|
||||
sd t0,32(sp)
|
||||
sd t1,40(sp)
|
||||
sd t2,48(sp)
|
||||
sd t3,56(sp)
|
||||
sd t4,64(sp)
|
||||
sd t5,72(sp)
|
||||
sd t6,80(sp)
|
||||
|
||||
sd a0,88(sp)
|
||||
sd a1,96(sp)
|
||||
sd a2,104(sp)
|
||||
sd a3,112(sp)
|
||||
sd a4,120(sp)
|
||||
sd a5,128(sp)
|
||||
sd a6,136(sp)
|
||||
sd a7,144(sp)
|
||||
|
||||
## Argument is already in a0, just forward it to puts
|
||||
call puts
|
||||
|
||||
ld ra,24(sp)
|
||||
ld s0,16(sp)
|
||||
|
||||
ld t0,32(sp)
|
||||
ld t1,40(sp)
|
||||
ld t2,48(sp)
|
||||
ld t3,56(sp)
|
||||
ld t4,64(sp)
|
||||
ld t5,72(sp)
|
||||
ld t6,80(sp)
|
||||
|
||||
ld a0,88(sp)
|
||||
ld a1,96(sp)
|
||||
ld a2,104(sp)
|
||||
ld a3,112(sp)
|
||||
ld a4,120(sp)
|
||||
ld a5,128(sp)
|
||||
ld a6,136(sp)
|
||||
ld a7,144(sp)
|
||||
|
||||
addi sp,sp,152
|
||||
jr ra
|
||||
.size println_string, .-println_string
|
||||
.section .rodata
|
||||
.align 3
|
||||
fmt_int:
|
||||
.string "%ld"
|
||||
str_empty:
|
||||
.string ""
|
||||
.text
|
||||
.align 1
|
||||
.globl print_int
|
||||
.type print_int, @function
|
||||
print_int: # print int stored in a0, saves/restores all scratch registers (except ft<n> which we don't use)
|
||||
addi sp,sp,-152
|
||||
|
||||
sd ra,24(sp)
|
||||
sd s0,16(sp)
|
||||
|
||||
sd t0,32(sp)
|
||||
sd t1,40(sp)
|
||||
sd t2,48(sp)
|
||||
sd t3,56(sp)
|
||||
sd t4,64(sp)
|
||||
sd t5,72(sp)
|
||||
sd t6,80(sp)
|
||||
|
||||
sd a0,88(sp)
|
||||
sd a1,96(sp)
|
||||
sd a2,104(sp)
|
||||
sd a3,112(sp)
|
||||
sd a4,120(sp)
|
||||
sd a5,128(sp)
|
||||
sd a6,136(sp)
|
||||
sd a7,144(sp)
|
||||
|
||||
## first parameter of print_int is second parameter of printf
|
||||
mv a1,a0
|
||||
## first parameter of printf is the format string
|
||||
la a0,fmt_int
|
||||
call printf
|
||||
|
||||
ld ra,24(sp)
|
||||
ld s0,16(sp)
|
||||
|
||||
ld t0,32(sp)
|
||||
ld t1,40(sp)
|
||||
ld t2,48(sp)
|
||||
ld t3,56(sp)
|
||||
ld t4,64(sp)
|
||||
ld t5,72(sp)
|
||||
ld t6,80(sp)
|
||||
|
||||
ld a0,88(sp)
|
||||
ld a1,96(sp)
|
||||
ld a2,104(sp)
|
||||
ld a3,112(sp)
|
||||
ld a4,120(sp)
|
||||
ld a5,128(sp)
|
||||
ld a6,136(sp)
|
||||
ld a7,144(sp)
|
||||
|
||||
addi sp,sp,152
|
||||
jr ra
|
||||
.size print_int, .-print_int
|
||||
.align 1
|
||||
.globl newline
|
||||
.type newline, @function
|
||||
newline: # print int stored in a0, saves/restores all scratch registers (except ft<n> which we don't use)
|
||||
addi sp,sp,-152
|
||||
|
||||
sd ra,24(sp)
|
||||
sd s0,16(sp)
|
||||
|
||||
sd t0,32(sp)
|
||||
sd t1,40(sp)
|
||||
sd t2,48(sp)
|
||||
sd t3,56(sp)
|
||||
sd t4,64(sp)
|
||||
sd t5,72(sp)
|
||||
sd t6,80(sp)
|
||||
|
||||
sd a0,88(sp)
|
||||
sd a1,96(sp)
|
||||
sd a2,104(sp)
|
||||
sd a3,112(sp)
|
||||
sd a4,120(sp)
|
||||
sd a5,128(sp)
|
||||
sd a6,136(sp)
|
||||
sd a7,144(sp)
|
||||
|
||||
## first parameter of printf is the format string
|
||||
la a0,str_empty
|
||||
call puts
|
||||
|
||||
ld ra,24(sp)
|
||||
ld s0,16(sp)
|
||||
|
||||
ld t0,32(sp)
|
||||
ld t1,40(sp)
|
||||
ld t2,48(sp)
|
||||
ld t3,56(sp)
|
||||
ld t4,64(sp)
|
||||
ld t5,72(sp)
|
||||
ld t6,80(sp)
|
||||
|
||||
ld a0,88(sp)
|
||||
ld a1,96(sp)
|
||||
ld a2,104(sp)
|
||||
ld a3,112(sp)
|
||||
ld a4,120(sp)
|
||||
ld a5,128(sp)
|
||||
ld a6,136(sp)
|
||||
ld a7,144(sp)
|
||||
|
||||
addi sp,sp,152
|
||||
jr ra
|
||||
.size newline, .-newline
|
||||
.align 1
|
||||
.globl print_char
|
||||
.type print_char, @function
|
||||
print_char: # print char stored in a0 (ascii code)
|
||||
addi sp,sp,-152
|
||||
sd ra,24(sp)
|
||||
sd s0,16(sp)
|
||||
|
||||
addi s0,sp,32
|
||||
|
||||
|
||||
sd t0,32(sp)
|
||||
sd t1,40(sp)
|
||||
sd t2,48(sp)
|
||||
sd t3,56(sp)
|
||||
sd t4,64(sp)
|
||||
sd t5,72(sp)
|
||||
sd t6,80(sp)
|
||||
|
||||
sd a0,88(sp)
|
||||
sd a1,96(sp)
|
||||
sd a2,104(sp)
|
||||
sd a3,112(sp)
|
||||
sd a4,120(sp)
|
||||
sd a5,128(sp)
|
||||
sd a6,136(sp)
|
||||
sd a7,144(sp)
|
||||
|
||||
# call to putchar
|
||||
mv a5,a0
|
||||
sb a5,-17(s0)
|
||||
lbu a5,-17(s0)
|
||||
sext.w a5,a5
|
||||
mv a0,a5
|
||||
call putchar
|
||||
|
||||
#restore registers
|
||||
ld ra,24(sp)
|
||||
ld s0,16(sp)
|
||||
|
||||
ld t0,32(sp)
|
||||
ld t1,40(sp)
|
||||
ld t2,48(sp)
|
||||
ld t3,56(sp)
|
||||
ld t4,64(sp)
|
||||
ld t5,72(sp)
|
||||
ld t6,80(sp)
|
||||
|
||||
ld a0,88(sp)
|
||||
ld a1,96(sp)
|
||||
ld a2,104(sp)
|
||||
ld a3,112(sp)
|
||||
ld a4,120(sp)
|
||||
ld a5,128(sp)
|
||||
ld a6,136(sp)
|
||||
ld a7,144(sp)
|
||||
|
||||
addi sp,sp,152
|
||||
jr ra
|
||||
.size print_char, .-print_char
|
||||
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
.text
|
||||
.globl main
|
||||
main:
|
||||
addi sp,sp,-16
|
||||
sd ra,8(sp)
|
||||
## TODO Your assembly code there
|
||||
## END TODO End of user assembly code
|
||||
ld ra,8(sp)
|
||||
addi sp,sp,16
|
||||
ret
|
||||
|
||||
# Data comes here
|
||||
.section .data
|
||||
mydata:
|
||||
.dword 7
|
||||
.dword 42
|
||||
min:
|
||||
.dword 0
|
||||
@@ -0,0 +1,26 @@
|
||||
.section .text
|
||||
.globl main
|
||||
main:
|
||||
addi sp,sp,-16
|
||||
sd ra,8(sp)
|
||||
## Your assembly code there
|
||||
la a0, .LC1
|
||||
call println_string
|
||||
li a0,42
|
||||
call print_int
|
||||
call newline
|
||||
li a0,97
|
||||
call print_char
|
||||
li a0,10 #new line char
|
||||
call print_char
|
||||
|
||||
## /end of user assembly code
|
||||
ld ra,8(sp)
|
||||
addi sp,sp,16
|
||||
ret
|
||||
|
||||
# Data comes here
|
||||
.section .data
|
||||
.align 3
|
||||
.LC1:
|
||||
.string "HI MIF08!"
|
||||
@@ -0,0 +1,15 @@
|
||||
.text
|
||||
.globl main
|
||||
main:
|
||||
addi sp,sp,-16
|
||||
sd ra,8(sp)
|
||||
## TODO Your assembly code there
|
||||
## END TODO End of user assembly code
|
||||
ld ra,8(sp)
|
||||
addi sp,sp,16
|
||||
ret
|
||||
|
||||
# Data comes here
|
||||
.section .data
|
||||
mydata:
|
||||
.dword 7
|
||||
Reference in New Issue
Block a user