ARM asm equ数组长度

ARM asm equ array length

我再次尝试在 x86 NASM 语法中做一些相对简单的事情,但我很难在 ARM 中找到任何关于它的东西。我正在尝试获取静态数组的长度,以便我可以在循环中进行比较。

This 很好地表明 equ 就像 c 中的 #define 语句,但这仍然不能真正帮助我找到静态数组的长度。

在 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

但这显然失败了,因为这不是 x86 上的 NASM。

如果有帮助,我正在使用 Qemu 模拟 ARMv7 系统 运行 Debian 与 GCC 链接。

我对您使用的是哪个工具链有些困惑。您 link 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.