使用CPUID指令了解C的mov [mem],reg指令

时间:2020-11-05 22:01:33

标签: assembly visual-c++ x86 disassembly intel-syntax

我一直在学校学习汇编,我正在尝试将其应用于实际情况。我有一个不再受支持的产品,我想看看使用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]

0 个答案:

没有答案
相关问题