Инициализация отрицательных типов данных в сборке ARM - PullRequest
1 голос
/ 16 октября 2019

В настоящее время я пытаюсь установить отрицательный / подписанный тип данных в сборке ARM с помощью raspberry pi. Я не имею в виду загрузку и хранение целых чисел со знаком, а скорее как объявление половинного слова со знаком в «.data». После компиляции я получаю это сообщение:

Error: unknown pseudo-op: '.shalfword'
file: third.s
.section .data
a:.shalfword -2

1 Ответ

1 голос
/ 17 октября 2019

Используя ассемблер gnu, должно работать следующее:

    .text
    start:
        adr   r3,target   ; target address to r3
        ldrsh r0,[r3],#2  ; ldrsh will sign extend
        ldrsh r1,[r3]     ; .. and post increment to get the next.
        add   r0,r0,r1    ; r0 = -2 + -3
        bx    lr
    target:
       .short -2, -3

Вот пример godbolt вывода компилятора . Важным моментом является то, что ARM не работает с 8 или 16 битами в регистрах (например, ah, al или ax в x86) и всегда использует 32-битные константы. Таким образом, немедленная загрузка небольших отрицательных констант будет иметь вид mvn rX,Y.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...