当我尝试使用as
(arm-linux-gnueabihf)编译此ARM asm时:
.data
len = 42
.text
mov r0, #13
......它有效。但是,当我将#13
替换为=len
时:
.data
len = 42
.text
mov r0, =len
我明白了:
Error: immediate expression requires a # prefix -- `mov r0,=len'
我尝过#len
和#=len
,似乎都没有效果。如何在ARM语法的.data
部分中引用.text
部分中的命名常量?
是的,我得到了段地址和常量混淆。对于后代,这里是统一语法的ARM hello world:
.syntax unified
.data
msg:
.ascii "Hello, ARM!\n"
len = . - msg
.text
.globl _start
_start:
mov r0, 1
ldr r1, =msg
mov r2, len
mov r7, 4
svc 0
mov r0, 0
mov r7, 1
svc 0