【发布时间】:2013-06-01 15:14:32
【问题描述】:
我的转换是否正确?
原始VS C++版本:
_TEB *pTeb = NULL;
_asm
{
mov eax, fs:[0x18];
mov pTeb, eax;
}
我的尝试(GCC):
_TEB *pTeb = NULL;
asm ("movl %%fs:0x18, %%eax\n\t"
"movl %%eax, %0"
: "=rm" (pTeb) : : "%eax");
【问题讨论】:
-
您是否尝试过对其进行测试以查看它是否正确编译并产生相同的结果?
-
对我来说看起来是正确的,只要两者都在 Windows 上运行(TIB 中的 ptibSelf 在其他地方不可用)。如果它是另一个平台的端口,您需要重新考虑功能:)
-
感谢 cmets,我是用手机写的,没有编译器可以检查。