2015-03-12 6 views
1

Я снова пытаюсь сделать что-то относительно простое в синтаксисе NAS8 x86, но у меня есть ужасное время, чтобы найти что-нибудь об этом в ARM. Я пытаюсь получить длину статического массива, чтобы у меня было что-то, что можно сравнить в цикле.ARM asm equ array length

This прекрасно показывает, что equ является как оператор #define в c, но это все еще не помогает мне найти длину статического массива.

В x86 NASM вы могли бы сделать это:

SECTION .data 
    brownFox:  db "The quick brown fox jumps over the lazy dog!", 10, 0 
    brownFox_bytes: equ $-brownFox 

В ARM я предположил бы, что есть что-то подобное, но я действительно не могу найти ничего об этом. Я пробовал сделать это:

.C.0.1569: 
    .word 0 
    .word 1 
    .word 2 
    .word 3 
    .align 2 
@ other stuff like .LC0-2 and main 
.L4: .align 2 
.L3: 
    .word .LC0 
    .word .LC1 
    .word .LC2 
    .word .C.0.1569 
    .equ len, $-.L3+16 

Но это явно не работает, поскольку это не NASM на x86.

Если это помогает, я использую Qemu, эмулирующую систему ARMv7, на которой работает Debian, связанная с GCC.

ответ

1

Я немного смущен, о какой toolchain вы используете. Вы связываете руководство для инструментальной схемы компилятора ARM , но затем укажите gcc, а также ваш файл, похоже, синтаксис gnu. На данный момент я придерживаюсь gnu, и, пожалуйста, уточните свой вопрос, если это не так.

В gnu as, текущий символ местоположения не $, но .. Таким образом, первоначальный nasm пример можно переписать следующим образом:

.data 
brownFox: .string "The quick brown fox jumps over the lazy dog!\n" 
.equ brownFox_bytes, .-brownFox 

Аналогично для данных слов, я просто не могу понять, что вы действительно хотели там.

PS: вы можете найти gnu as manual online here.

+0

ах, ну, я нахожусь в классе сборки, и мы выполнили весь термин в x86 asm, но теперь мы ожидаем, что мы будем изучать ARM asm для последнего задания самостоятельно, и мне трудно понять, что какие. Я использую gcc, поэтому, полагаю, это означает, что я использую gnu suntax. Ссылка была связана с тем, что я не знаю, что делаю, и сказал, что ARM наверху. – dlkulp