[英]How can I use a for loop for an Assembly MIPS instruction?
因此,我最近一直在忙於匯編,而我一直堅持使用for循環。 我已經在互聯網上進行搜索,但我一無所知。 我必須循環SLL $1,$1,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 , 1 # storing numeric into reg
ORI $1 , $1 , 0
SW $1 , a , $0 # assignment of var
# expr;
LUI $1 , 0 # storing numeric into reg
ORI $1 , $1 , 1000
SW $1 , b , $0 # assignment of var
# expr;
LW $1 , b , $0 # storing var into reg
LW $2 , b , $0 # storing var into reg
SLL $1 , $1 , 4 # sll operation
SW $1 , result , $0 # assignment of var
# expr;
LUI $1 , 0 # storing numeric into reg
ORI $1 , $1 , 1
#return int value # stack ret value
JR $31 # 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”:
for( int n = 0; n < 10; ++n ) {}
其他執行實際工作的代碼MIPS代碼(將出現在C括號中的代碼)將位於loop:標簽和addi指令之間。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.