我目前正在學習一個類的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
作爲一個方面說明,我使用ARMSim#的要求我的教授,所以由GNU工具公認的一些命令將不會被ARMSim#識別,或者至少我認爲是這樣的。如果我錯了,請糾正我。
爲什麼要投票?是的,這與家庭作業有部分關係,但我可以看到這些信息對其他人有用,我不問如何做我的任務。 – allejo
如果你想這樣說,沒有任何處理器家族中的數組不是隻有arm。數組實際上並不存在,它們只是從某處開始的一塊內存。許多指令集,絕對支持,支持寄存器偏移量尋址模式,使您可以獲得純粹的陣列感覺。我會小心地做出你未來的發言。 –
@dwelch啊謝謝你的提示,對我的理解有了很大的幫助。我也會記住不要給他們一個數組 – allejo