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.
我再次尝试在 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.