在过去的几天里,我一直在努力让我的代码工作。它的目的是将传递的参数存储到GLOBAL数组中。该参数通过C代码中的不同文件传递,但这不是我遇到的问题。因此,每当我尝试将值存储到数组的位置时,我都会遇到分段错误!我知道他们是因为我试图访问非法地址而引起的,但我真的无法想到如何解决这个问题。如果有人能帮助我,我将非常感激!我的汇编代码在
之下define(stackSize,5)
define(true,1)
define(false,0)
.data //for global variables
.bss
.global stack_arr
stack_arr: .skip 5 * 4 //5 long array of ints
.data
.global top
top: .word -1 // global word =-1
.text
.balign 4
.global main
main:
stp x29, x30, [sp,-16]! //allocate stack memeory
mov x29, sp //have sp point to x29
mov w9, w0 //w9 = passed parameter
bl stackFull // check if stackFull
mov w10, w0 //w10=result of stackFull
cmp w10, true
//b.eq printOverflow //if stackFull returns true print
//othersise,
adrp x11, top
add x11, x11, :lo12:top // move top to x11
ldr x12, [x11]
add x12, x12, 1 //++top
adrp x13, stack_arr
add x13, x13, :lo12:stack_arr // move stack address to x13
str w9, [x13, x12, lsl 2] //store
ldp x29, x30, [sp], 16
ret