我目前正在学习ARM,必须将特定的C代码片段转换为ARM代码才能在计算机上进行测试。但是,我不知道如何在ARM中专门声明数组,也找不到解释它的非常相关的资源。
i = 0
while (i < 0xB) {
x[i] = i*2;
}
提前谢谢了
最佳答案
既然没有这个问题的答案,我将使用GodBolt并在其中输入OP的代码。
我可以自由地格式化给定的代码:
void assign(int num) {
int x[10];
int i = 0;
while(i < 0xB) {
x[i] = i*2;
}
}
用于翻译的编译器是ARM gcc 5.4.1
翻译代码:
assign(int):
str fp, [sp, #-4]!
add fp, sp, #0
sub sp, sp, #60
str r0, [fp, #-56]
mov r3, #0
str r3, [fp, #-8]
.L3:
ldr r3, [fp, #-8]
cmp r3, #10
bgt .L4
ldr r3, [fp, #-8]
mov r2, r3, asl #1
ldr r3, [fp, #-8]
mov r3, r3, asl #2
sub r1, fp, #4
add r3, r1, r3
str r2, [r3, #-44]
b .L3
.L4:
mov r0, r0 @ nop
sub sp, fp, #0
ldr fp, [sp], #4
bx lr
资料来源:https://godbolt.org/g/5Tv3gk