gpt4 book ai didi

c++ - VS C++ ASM 到 GCC ASM

转载 作者:太空宇宙 更新时间:2023-11-04 14:06:00 26 4
gpt4 key购买 nike

我是否正确转换了它?

原始 VS C++ 版本:

 _TEB *pTeb = NULL;

_asm
{
mov eax, fs:[0x18];
mov pTeb, eax;
}

我的尝试(海湾合作委员会):

 _TEB *pTeb = NULL;

asm ("movl %%fs:0x18, %%eax\n\t"
"movl %%eax, %0"
: "=rm" (pTeb) : : "%eax");

最佳答案

如果您需要 Windows 相关代码的 GCC 语法,一个很好的检查来源是 ReactOS来源。这是他们对 NtCurrentTeb() 的实现(删除了不相关的部分):

unsigned long __readfsdword(const unsigned long Offset)
{
unsigned long value;
__asm__ __volatile__("movl %%fs:%a[Offset], %k[value]" : [value] "=r" (value) : [Offset] "ir" (Offset));
return value;
}

struct _TEB * NtCurrentTeb(VOID)
{
return (PTEB)__readfsdword(0x18);
}

关于c++ - VS C++ ASM 到 GCC ASM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16874152/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com