【问题标题】:ARM asm equ array lengthARM asm equ 数组长度
【发布时间】:2015-03-12 19:49:57
【问题描述】:

我再次尝试在 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 模拟运行 Debian 与 GCC 链接的 ARMv7 系统。

【问题讨论】:

    标签: arrays assembly armv7


    【解决方案1】:

    我对您使用的工具链有些困惑。您链接了 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 asm 完成的,但现在我们希望自己去学习 ARM asm 以完成最后一项作业,我很难弄清楚是什么。我正在使用 gcc,所以我想这意味着我正在使用 gnu suntax。该链接是因为我不知道自己在做什么,并且在顶部显示 ARM。
    猜你喜欢
    • 1970-01-01
    • 2013-06-15
    • 2014-03-02
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多