jia*_*587 5 syntax label gnu intel object-address
我有这样的代码:
.bss
woof: .long 0
.text
bleh:
...some op codes here.
Run Code Online (Sandbox Code Playgroud)
现在我想将woof的地址移到eax中.这样做的英特尔语法代码是什么?将bleh的地址移动到ebx也是如此.
非常感谢您的帮助!
bss部分中不能包含任何实际对象.有些汇编程序可能仍允许你切换到.bss部分,但你可以做的就是:x: . = . + 4.
在大多数汇编程序中,特别是在gnu for intel中,不再有.bss指令,所以你暂时切换到bss并在一次创建bss符号,例如:.comm sym,size,alignment.这就是为什么你可能会收到错误" .bss指令未被识别 "或类似的东西.
然后您可以使用以下任一方式获取地址:
lea woof, %eax
Run Code Online (Sandbox Code Playgroud)
要么
movl $woof, %eax
Run Code Online (Sandbox Code Playgroud)
更新: aha,intel语法,而不是intel架构.好:
.intel_syntax noprefix
lea esi,fun
lea esi,[fun]
mov eax,OFFSET FLAT:fun
.att_syntax
lea fun, %eax
mov $fun, %eax
.data
fun: .long 0x123
Run Code Online (Sandbox Code Playgroud)
所有lea表单都应该生成相同的代码.