all*_*ejo 6 arrays assembly arm
我目前正在学习一个类的ARM程序集,并遇到了一个我需要使用"数组"的问题.我知道ARM中没有数组这样的东西所以我必须分配空间并将其视为一个数组.我有两个问题.
loop:
但不知道如何使用它来访问不同的"索引".到目前为止,这是我从阅读ARM文档中获得的,因为我从在线资源中收集了这些文档.
.equ SWI_Exit, 0x11
.text
.global _start
_start: .global _start
.global main
b main
main:
ldr R0, =MyArray
mov R1, #42
str R1, [R0], #4
mov R1, #43
str R1, [R0], #4
swi SWI_Exit
MyArray: .skip 20 * 4
.end
Run Code Online (Sandbox Code Playgroud)
作为旁注,我正在按照我的教授的要求使用ARMSim#,因此GNU工具识别的一些命令将不会被ARMSim#识别,或者至少我相信是这种情况.如果我错了,请纠正我.
小智 3
.skip
分配固定大小的数组。* 可变大小的、可增长的数组通常通过使用堆栈或堆的更复杂的动态内存分配代码来实现。loop:
(实际名称是任意的),您可以使用 分支(返回)到它b loop
。(可能,您希望有条件地执行分支,以便程序不会永远循环。)您可以通过更改 来访问循环中的不同元素R0
,您已经在这样做了此外,它b main
并没有真正起到任何作用,因为它正在分支到下一条指令。如果删除该代码,它也会执行相同的操作。
[*] 或者,您可以说您的数组是MyArray
和之间的唯一元素R0
(不包括内存R0
指向),其中,通过更改R0
您可以扩展数组。但最大尺寸仍然由.skip
指令固定。