gpt4 book ai didi

assembly - 为什么调用指令操作码表示为FF15?

转载 作者:行者123 更新时间:2023-12-04 23:45:30 25 4
gpt4 key购买 nike

我仍在学习汇编并尝试将指令与其操作码连接起来。阅读pdf在
https://code.google.com/p/corkami/wiki/PE101?show=content

它只是剖析了一个在 Windows 中显示消息框的简单程序的 PE 文件,代码是“删除所有不相关的条目”

push 0
push Title + DATADELTA
push Caption + DATADELTA
push 0
call [__imp__MessageBoxA]

当试图查看生成的 exe 文件“.text”部分时,最后一次调用用操作码“FF15”表示,检查英特尔手册和操作码列表 http://ref.x86asm.net/coder32.html

您会发现“call”指令操作码只是“FF”,那么“15”指的是什么或来自什么?

最佳答案

看看这个问题:what does opcode FF350E204000 do?

它解释了整组指令以 FF 开头:INC , DEC , CALLN , CALLF , JMPN , JMPF , PUSH .

该指令是通过查看 ModR/M 字节的第 5 位到第 3 位来确定的(如果您想避免使用官方英特尔手册,请参见例如 here),即您的情况,0x15 (跟随 FF 的字节)。
0x150001 0101以二进制表示,第 5-3 位为:010 (最左边的位是第 7 位,最右边的位是第 0 位,将其视为一个数组)。
010二进制是 2,这意味着您必须从列表中选择第三个元素(INC 是元素号 0)[INC、DEC、CALLN、CALLF、JMPN、JMPF、PUSH]。

这给你“调用”。

所以你知道你的 FF 15CALLN操作说明。 N 代表近(相对于 F/FAR)

关于assembly - 为什么调用指令操作码表示为FF15?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29837363/

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