如何解决使用CPUID指令了解C的mov [mem],reg指令
我一直在学校学习汇编,我正在尝试将其应用于实际情况。我有一个不再受支持的产品,我想看看使用CPUID进行多次检查的部分代码是如何工作的。我只研究了MIPS架构,因此我使用x86指令和寄存器的参考来理解。拆卸如下:
007b65ef b8 01 00 MOV EAX,0x1
00 00
007b65f4 0f a2 CPUID
007b65f6 a3 28 11 MOV [DAT_00af1128],EAX = ??
af 00
007b65fb 89 1d 24 MOV dword ptr [DAT_00af1124],EBX = ??
11 af 00
007b6601 89 15 20 MOV dword ptr [DAT_00af1120],EDX = ??
11 af 00
007b6607 89 0d 1c MOV dword ptr [DAT_00af111c],ECX = ??
11 af 00
这是它编译成的C代码
puVar4 = (undefined4 *)cpuid_Version_info(1);
_DAT_00af1128 = *puVar4;
_DAT_00af1124 = puVar4[1];
_DAT_00af1120 = puVar4[2];
_DAT_00af111c = puVar4[3];
我不明白的是,_DAT_00af1128
的值是如何存储的,当程序集将地址移入寄存器时,而不是相反。我以为应该是MOV EBX,dword ptr [DAT_00af1124]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。