1

我花了大约 6 个小时使用 Cheat Engine 调试一些代码。我遇到了一些非常奇怪的事情。

疯狂奇怪的指令

指令内容如下:

imul esi,esi0A

这是什么意思?

指令前 ESI = 5 在 imul 指令后变为 32。

4

1 回答 1

3

TL;博士

有问题的指令可能是为了

imul esi, esi, 0x0A

,但 Cheat Engine 可能忘记打印逗号,


更长的版本

您描述的数学结果与0x00000005= 5 乘以0x0A= 10 得到0x00000032= 50 一致。

英特尔软件开发人员手册,第 2A 卷,第 3.2 节 -IMUL - Signed Multiply记录指令的功能和有效形式。在允许立即常数的那些中,唯一可用的形式需要指定 1) 目标寄存器,2) 源寄存器和 3) 立即常数。

在这种特殊情况下,显然这些分别是esi, esi, 0x0A。作弊引擎只是打印不正确。

IMUL 指令表

于 2019-03-26T18:01:51.850 回答