如何将 for 循环用于汇编 MIPS 指令?
How can I use a for loop for an Assembly MIPS instruction?
所以最近忙于汇编,一直在使用for循环。我已经通过互联网搜索过,但我不明白任何内容。我必须循环 SLL ,,4 # sll operation
X 次。我该怎么做?
#generated assembly code for SIMPL
@include "Mips.wasm"
.data MyRegisters: REGISTERS
0: WORD zero 0
1: WORD temp 0
2: WORD 0
3: WORD 0
4: WORD 0
5: WORD 0
6: WORD 0
7: WORD 0
8: WORD 0
9: WORD 0
10: WORD 0
29: WORD sp 0
31: WORD ra
.data MyMemory: DATAMEM
50: WORD stack # start of stack
0: WORD a 0
1: WORD b 0
2: WORD result 0
.code MyCode: MIPS,MyMemory
J INIT
L1: # main
LUI , 1 # storing numeric into reg
ORI , , 0
SW , a , [=10=] # assignment of var
# expr;
LUI , 0 # storing numeric into reg
ORI , , 1000
SW , b , [=10=] # assignment of var
# expr;
LW , b , [=10=] # storing var into reg
LW , b , [=10=] # storing var into reg
SLL , , 4 # sll operation
SW , result , [=10=] # assignment of var
# expr;
LUI , 0 # storing numeric into reg
ORI , , 1
#return int value # stack ret value
JR # return
INIT: # Start of our program
J L1 # jump to the main code
END:
汇编程序中没有循环,这是 C(或类似语言)的概念。
相反,有条件分支指令用于根据测试跳转。
li $t0, 10
li $t1, 0
loop:
addi $t1, $t1, 1
bne $t1, $t0, loop
这大致对应于 C "for" of:
for( int n = 0; n < 10; ++n ) {}
执行实际工作的其他代码 MIPS 代码(将出现在 C 中的括号中的代码)将位于循环:标签和 addi 指令之间。
所以最近忙于汇编,一直在使用for循环。我已经通过互联网搜索过,但我不明白任何内容。我必须循环 SLL ,,4 # sll operation
X 次。我该怎么做?
#generated assembly code for SIMPL
@include "Mips.wasm"
.data MyRegisters: REGISTERS
0: WORD zero 0
1: WORD temp 0
2: WORD 0
3: WORD 0
4: WORD 0
5: WORD 0
6: WORD 0
7: WORD 0
8: WORD 0
9: WORD 0
10: WORD 0
29: WORD sp 0
31: WORD ra
.data MyMemory: DATAMEM
50: WORD stack # start of stack
0: WORD a 0
1: WORD b 0
2: WORD result 0
.code MyCode: MIPS,MyMemory
J INIT
L1: # main
LUI , 1 # storing numeric into reg
ORI , , 0
SW , a , [=10=] # assignment of var
# expr;
LUI , 0 # storing numeric into reg
ORI , , 1000
SW , b , [=10=] # assignment of var
# expr;
LW , b , [=10=] # storing var into reg
LW , b , [=10=] # storing var into reg
SLL , , 4 # sll operation
SW , result , [=10=] # assignment of var
# expr;
LUI , 0 # storing numeric into reg
ORI , , 1
#return int value # stack ret value
JR # return
INIT: # Start of our program
J L1 # jump to the main code
END:
汇编程序中没有循环,这是 C(或类似语言)的概念。
相反,有条件分支指令用于根据测试跳转。
li $t0, 10
li $t1, 0
loop:
addi $t1, $t1, 1
bne $t1, $t0, loop
这大致对应于 C "for" of:
for( int n = 0; n < 10; ++n ) {}
执行实际工作的其他代码 MIPS 代码(将出现在 C 中的括号中的代码)将位于循环:标签和 addi 指令之间。