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