我有这样的代码:
.bss
woof: .long 0
.text
bleh:
...some op codes here.
现在我想把woof的地址移到eax中。这里有什么 intel语法代码?将bleh的地址移动到例如ebx中也是如此。
非常感谢您的帮助!
答案 0 :(得分:7)
bss部分中不能包含任何实际对象。有些汇编程序可能仍然允许你切换到.bss部分,但你可以做的就是:x: . = . + 4
。
在大多数汇编程序中,特别是在gnu for intel中,不再有.bss
指令,因此您暂时切换到bss并一次性创建bss符号,例如:.comm sym,size,alignment
。这就是为什么你可能会收到错误“。 bss指令无法识别”或类似的东西。
然后您可以使用以下任一方式获取地址:
lea woof, %eax
或
movl $woof, %eax
更新: aha,英特尔语法,而不是英特尔架构。 OK:
.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
所有lea
表单都应生成相同的代码。