将 Java while 循环翻译成 ARM 程序集?
Translating Java while loop into ARM Assembly?
我想将一些 Java 代码从下面的循环中计算总和转换为 ARM 汇编,我想知道:如何修复我目前所拥有的?
这是我正在翻译的 Java 代码:
R0 = 0;
R1 = 1;
while (R1 < 100)
{
R0 += R1;
R1++;
}
这是 ARM 汇编中的代码:
MOV R0,#0
MOV R1,#1
MOV R2,#100
looptop
CMP R0, R2
BGT loopbottom
ADD R0, R0, R1
ADD R1, R1, #1
B looptop
loopbottom
您不必初始化 r2
,因为您可以将立即值 100 与 cmp
:
一起使用
mov r1, #1
mov r0, #0
1
cmp r1, #100
add r0, r0, r1
add r1, r1, #1
blt %b1
您可以通过构造具有递减的零终止计数器的循环来完全删除 cmp
指令:
mov r1, #100
mov r0, #0
1
subs r1, r1, #1
addgt r0, r0, r1
bgt %b1
我想将一些 Java 代码从下面的循环中计算总和转换为 ARM 汇编,我想知道:如何修复我目前所拥有的?
这是我正在翻译的 Java 代码:
R0 = 0;
R1 = 1;
while (R1 < 100)
{
R0 += R1;
R1++;
}
这是 ARM 汇编中的代码:
MOV R0,#0
MOV R1,#1
MOV R2,#100
looptop
CMP R0, R2
BGT loopbottom
ADD R0, R0, R1
ADD R1, R1, #1
B looptop
loopbottom
您不必初始化 r2
,因为您可以将立即值 100 与 cmp
:
mov r1, #1
mov r0, #0
1
cmp r1, #100
add r0, r0, r1
add r1, r1, #1
blt %b1
您可以通过构造具有递减的零终止计数器的循环来完全删除 cmp
指令:
mov r1, #100
mov r0, #0
1
subs r1, r1, #1
addgt r0, r0, r1
bgt %b1