gpt4 book ai didi

c - 如何解释反汇编的 C 代码

转载 作者:太空宇宙 更新时间:2023-11-04 05:34:11 25 4
gpt4 key购买 nike

假设我在 C 编译器生成的目标文件上运行 objdump -d,我得到了这个反汇编:

0000000000400b5e <main>:
400b5e: 55 push %rbp
400b5f: 48 89 e5 mov %rsp,%rbp
400b62: bf 50 0a 49 00 mov $0x490a50,%edi
400b67: e8 04 0b 00 00 callq 401670 <_IO_puts>
400b6c: 5d pop %rbp
400b6d: c3 retq
400b6e: 66 90 xchg %ax,%ax

我不确定如何解释这里的所有内容。走线:

400b62: bf 50 0a 49 00 mov $0x490a50,%edi

我知道 mov 语句在做什么,但是 400b62 是什么意思? bf 50 0a 49 00 是什么意思?我在 Internet 上找不到任何解释如何阅读这些内容的内容。

最佳答案

400b62 是指令的地址。 bf 50 0a 49 00 是组成指令的字节。在这种情况下,位于 400b62 的指令将寄存器 %edi 设置为 0x490a50。这里 bf 表示“set edi”,50 0a 49 00 是 0x490a50 的小字节序字节(与 Intel 处理器一样)。

如果您希望能够阅读每条指令,则需要进行一些解码,但可以做到。根据我的经验,最好的引用是 Intel® 64 and IA-32 Architectures Software Developer Manuals ,但它们不适合胆小的人。

关于c - 如何解释反汇编的 C 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46738723/

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