我花了大约 6 个小时使用 Cheat Engine 调试一些代码。我遇到了一些非常奇怪的事情。
指令内容如下:
imul esi,esi0A
这是什么意思?
指令前 ESI = 5 在 imul 指令后变为 32。
我花了大约 6 个小时使用 Cheat Engine 调试一些代码。我遇到了一些非常奇怪的事情。
指令内容如下:
imul esi,esi0A
这是什么意思?
指令前 ESI = 5 在 imul 指令后变为 32。
有问题的指令可能是为了
imul esi, esi, 0x0A
,但 Cheat Engine 可能忘记打印逗号,
。
您描述的数学结果与0x00000005
= 5 乘以0x0A
= 10 得到0x00000032
= 50 一致。
英特尔软件开发人员手册,第 2A 卷,第 3.2 节 -IMUL - Signed Multiply
记录指令的功能和有效形式。在允许立即常数的那些中,唯一可用的形式需要指定 1) 目标寄存器,2) 源寄存器和 3) 立即常数。
在这种特殊情况下,显然这些分别是esi
, esi
, 0x0A
。作弊引擎只是打印不正确。