gpt4 book ai didi

assembly - 在x86程序集中取消引用标签

转载 作者:行者123 更新时间:2023-12-04 16:41:50 26 4
gpt4 key购买 nike

考虑以下x86汇编代码:

section .data

foo:
mov ebx, [boo]
mov [goo], ebx
goo:
mov eax, 2
mov eax, 3
ret
boo:
mov eax, 4
mov eax, 5
ret

这到底是怎么回事?当我将 [boo]mov取消引用到 [goo]时,我到底在那移动了什么?只是一个命令? ret也是吗?

后续问题:
  • 取消引用标签会给我地址吗?还是标签中第一个命令的机器代码?
  • 如果是机器代码-怎么可能不止一个命令?并非所有命令都本质上是32位的(即使不是所有位都被使用了)?
  • 底线-eax末尾的值是3还是5?
  • 最佳答案

    boomov eax, 3节内.data指令的偏移量。mov ebx, [boo]的意思是“在boo内部的ebx指示的偏移量处提取四个字节”。
    同样,mov [goo], ebx将ebx的内容移动到goo指示的偏移处。

    但是,代码通常是只读的,因此看到代码崩溃就不足为奇了。

    这是boo中的指令的编码方式:

    boo:
    b8 03 00 00 00 mov eax,0x3
    c3 ret

    因此,您在 ebx中得到的实际上是 mov eax, 3指令的4/5。

    关于assembly - 在x86程序集中取消引用标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1296515/

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