在汇编中存储全局数组的内容?

时间:2018-03-30 23:00:02

标签: arrays assembly global

在过去的几天里,我一直在努力让我的代码工作。它的目的是将传递的参数存储到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

0 个答案:

没有答案