所以我学习汇编并且我刚刚学会了创建一个函数我创建了一个标签,使用BL来分支到标签,然后使用BX LR从函数调用返回。
我知道LR存储PC的地址+4位,然后程序指针移动到标签的地址,然后PC通过代码递增,直到它到达BX LR,然后PC现在指向地址LR指着。
我的问题是我是否有以下伪代码:
func initArr()
for(i = 0; i < max; i++)
arr[i] = i
return;
如何将其转换为装配体。据我所知,BX LR从函数返回,但是一旦我发现I&gt; = max,我想返回。这会有用吗?:
.global _start
_start:
LDR R1, =A
MOV R2, #0x00
BL _initArr
_end:
MOV R1, #0
MOV R7, #1
SWI 0
_initArr:
CMP R2, #MAX
BEQ LR @this
STR R2, [R1]
ADD R1, #0x04
ADD R2, #0x01
B _initArr
.data
.equ MAX, 10
A: rept MAX
byte 0x00
endr
更具体一点: