首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VS C++ ASM到GCC ASM

VS C++ ASM到GCC ASM
EN

Stack Overflow用户
提问于 2013-06-01 23:14:32
回答 1查看 700关注 0票数 1

我的转换是正确的吗?

原始VS C++版本:

代码语言:javascript
复制
 _TEB *pTeb = NULL;

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

我的尝试(GCC):

代码语言:javascript
复制
 _TEB *pTeb = NULL;

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

回答 1

Stack Overflow用户

发布于 2013-06-03 18:40:49

如果你需要为视窗相关的代码使用GCC语法,一个很好的来源是ReactOS源码。下面是他们的NtCurrentTeb()实现(去掉了不相关的部分):

代码语言:javascript
复制
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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16874152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档