在我的函数中,我使用
__asm
{
mov ecx,dword ptr [0x28F1431]
mov ecx,ds:[0x28F14131]
}
应该生成以下字节:0x8B0D
(mov ecx,dword ptr []
)。 然而第一条指令生成 0xB9
(mov ecx,0x28F14131
),第二条指令生成 0x3E
:8B0D。
我的问题是,在 C++ 的 __asm
中,我应该使用什么指令来获得所需的结果?
如果您确定内联汇编的字节序列是100%正确的,那么您可以始终明确使用这些字节。具体的语法我不太清楚,但如果您正在使用GCC,可以尝试....
__asm {
.byte 0x##
.byte 0x##
...
}
__emit
将字节放入汇编输出流中。 - Necrolis
8B 8C 25 31 14 8F 02
(使用没有索引的SIB)。 - harold