VS C++ ASM to GCC ASM
VS C++ ASM to GCC ASM
转换正确吗?
VS ++原始版本:
_TEB *pTeb = NULL;
_asm
{
mov eax, fs:[0x18];
mov pTeb, eax;
}
My attempt (GCC):
_TEB *pTeb = NULL;
asm ("movl %%fs:0x18, %%eaxnt"
"movl %%eax, %0"
: "=rm" (pTeb) : : "%eax");
如果你需要GCC语法的windows相关的代码,一个很好的源代码检查是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);
}
相关文章:
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 奇怪的结构&GCC&clang(void*返回类型)
- GCC本机矩阵运算库
- PowerPC ppc64le上的Gcc Woverloaded虚拟错误
- gcc和c++17的过载解析失败
- 数据成员SFINAE的C++17测试:gcc vs clang
- GCC对可能有效的代码抛出init list生存期警告
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- GCC内联ASM X86 CPU标志作为输入依赖性
- 引用如何在gcc中转换为asm
- 错误:使用gcc 32位时,"asm"操作数具有不可能的约束
- 将 GCC 特定的 ASM 代码移植到 MSVC
- 具有变量的 GCC 内联 ASM
- GCC 内联 ASM,未知的 SSE 操作码
- GCC 内联 ASM 跳转到带有交叉抛出异常的标签
- 在gcc中生成ASM代码需要什么,g++
- GCC内联ASM保证
- VS C++ ASM to GCC ASM
- 使 GCC 的 ASM 标签可用于标记化
- 为什么gcc和icc为c++函数生成具有相同标签名称的asm ?