codeA:
.data
N: .word 10
V: .word 90,50,40,20,30,10,80,70,60,100
.text
main:
li t2, 0 //t2 <-0
la t3, N //t3 <- @N
lw t3, 0(t3) //t3<- N
la t4, V //t4 <- V
addi a7, x0, 1 //a7 <- i <- 1
p1:
beq t2, t3, end
lw a0, 0(t4) // a0 <- V[?]
ecall
addi t2, t2, 1
addi t4, t4, 4
j p1
end:
我是这方面的新手,我正在努力理解这段代码是做什么的。
我试着把它“翻译”成C语言或某种伪代码,使它更容易理解。
1条答案
按热度按时间xu3bshqb1#
这是在做:
因此,打印数组中从0到〈N的所有元素。
但是,它使用的是指针而不是数组索引。因此,在C中,它看起来更像这样:
现在,它不是使用
printf ( "%d" ... );
,而是使用MARS/RARS syscall/ecall #1将整数作为文本打印到屏幕上--但对于C编程来说,printf
是sys/ecall的最佳Map。