gpt4 book ai didi

syntax - gnu 汇编器 : get address of label/variable [INTEL SYNTAX]

转载 作者:行者123 更新时间:2023-12-04 17:59:15 25 4
gpt4 key购买 nike

我有一个这样的代码:

.bss
woof: .long 0

.text
bleh:
...some op codes here.

现在我想将woof的地址移动到eax中。什么是 英特尔语法 这里的代码是这样做的吗?将 bleh 的地址移动到 ebx 中也是如此。

非常感谢您的帮助!

最佳答案

bss 部分不能包含任何实际对象。一些汇编程序可能仍然允许您切换到 .bss 部分,但您所能做的就是说:x: . = . + 4 .

现在在大多数汇编程序中,特别是在用于英特尔的 gnu 中,不再有 .bss指令,因此您可以暂时切换到 bss 并使用以下内容一次性创建 bss 符号:.comm sym,size,alignment .这就是为什么您可能会收到“.bss 指令无法识别”或类似错误的原因。

然后您可以通过以下任一方式获取地址:

lea woof, %eax

或者
movl $woof, %eax

更新:啊哈,英特尔语法,而不是英特尔架构。好的:
.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表单应该生成相同的代码。

关于syntax - gnu 汇编器 : get address of label/variable [INTEL SYNTAX],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1897401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com