ARM STR для переменной в .data - PullRequest
       0

ARM STR для переменной в .data

0 голосов
/ 21 октября 2018

У меня проблема с пониманием, почему я не могу инициализировать переменную, которую я сделал в разделе .data, на 0. Я также связываю это с GCC для printf

Пример:

.data 
length:    .space 8   
ls: .asciz "Value: %d\n"

.text
.global main

main:   ldr x0, =ls //Set x0 to memory address of string to print
        ldr x1, =length //Loads memory address of length value as %d
        bl printf //This prints out 4264119 which I assume is what is there

        mov x0, #0 //Sets register 0 to the value 0
        ldr x1, =length //Loads the address of variable length
        str x0, [x1] //I attempt to store the value 0 in the variable length

        ldr x0, =ls
        ldr x1, =length
        bl printf //I print out length but it is still 4264119 somehow

Вывод:

Value: 4264119
Value: 4264119

Если кто-то может объяснить, что я делаю неправильно, потому что я попытался найти это, но все примеры, кажется, делают то, что я делаю.

Спасибо.

ОБНОВЛЕНИЕ:

Я решил проблему с помощью @ jasonharper.

Значение% d в регистре x1 должно быть ACTUAL значение не адрес памяти.

Таким образом, я всегда печатал адрес, а не фактическое значение.

Решение:

ldr x0, =ls
ldr x2, =length //Load memory address of length into x2
ldr x1, [x2]   // Load value in memory address of length into x1
bl printf      //Print out the actual value and not the memory address
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...