我正在尝试编码x86指令以获取由C ++指针指定的地址。例如,我有一个32位的数字,我想移动到eax寄存器。在组装中,这很容易。
mov eax, number
我想用二进制编码x86指令来使用指向数字的C ++指针来执行此操作。 mov(存储器到32位寄存器)的操作码是0x8B。我不知道什么用于Mod-Reg-R / M字节和位移。有没有办法直接从指针编码地址?或者我必须做一些位移数学?另外,我真的不明白置换是如何工作的。
指令将在动态分配的内存中存储和调用。这是针对模拟器的动态重新编译器。我已经尝试了各种与Mod-Reg-R / M和指针的组合,没有运气。我也无法在网上找到解释这是如何工作的任何内容。