gnu 汇编器:获取标签/变量的地址 [INTEL SYNTAX]

发布于 2024-08-15 03:05:12 字数 206 浏览 13 评论 0原文

我有这样的代码:

.bss
woof: .long 0

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

现在我想将 woof 的地址移到 eax 中。用于执行此操作的英特尔语法代码是什么?将 bleh 的地址移动到 ebx 中也是如此。

非常感谢您的帮助!

I have a code like this:

.bss
woof: .long 0

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

now I would like to move the address of woof into eax. What's the intel syntax code here for doing that? The same goes with moving bleh's address into, say, ebx.

Your help is much appreciated!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

淡淡離愁欲言轉身 2024-08-22 03:05:12

bss 部分中不能有任何实际对象。某些汇编器可能仍然允许您切换到 .bss 部分,但您所能做的就是说类似: x: 。 = 。 + 4

如今,在大多数汇编器中,特别是在 gnu for intel 中,不再有 .bss 指令,因此您可以暂时切换到 bss,并使用以下内容一次性创建 bss 符号:。通信符号、大小、对齐方式。这就是为什么您可能会收到错误“.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 表单都应该生成相同的代码。

The bss section can't have any actual objects in it. Some assemblers may still allow you to switch to the .bss section, but all you can do there is say something like: x: . = . + 4.

In most assemblers these days and specifically in gnu for intel, there is no longer a .bss directive, so you temporarily switch to bss and create the bss symbol in one shot with something like: .comm sym,size,alignment. This is why you are presumably getting an error ".bss directive not recognized" or something like that.

And then you can get the address with either:

lea woof, %eax

or

movl $woof, %eax

Update: aha, intel syntax, not intel architecture. 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

All the lea forms should generate the same code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文