assembly - 获取FS :[0] in 32-bit protected mode/MSVC inline asm的线性地址

标签 assembly visual-c++ x86 inline-assembly

我在 Visual C++ 内联汇编中使用了此指令

lea eax, FS:[0]

为什么eax得到零?

如何获取FS:[0]的线性地址?

最佳答案

假设 FS 指向 Windows Thread Information Block (TIB),也称为线程环境 block (TEB),通过读取fs:[0x18]处的32位值来获取TIB的线性地址。在 Visual C++ 中执行此操作的最佳方法是使用 __readfsdword内在:

TEB *teb = (TEB *) __readfsdword(0x18);

关于assembly - 获取FS :[0] in 32-bit protected mode/MSVC inline asm的线性地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47589280/

相关文章:

assembly - 将基于索引模式转换为间接寻址模式(x86 汇编)

c - 编程旧控制台,Magnavox Odyssey 2?

c++ - 为什么插入运算符打印地址而不是字符串?

c++ - 带有常规文件的 System.AccessViolationException

visual-c++ - 如何在 Visual Studio C++ 中使用 LibVLC 通过网络流式传输存储在内存缓冲区中的原始图像数据?

assembly - JE 的跳跃距离有限制吗?

c - 内联汇编中 jmp 的地址错误

assembly - 在汇编语言中,行 (r3)+ 是做什么的?

linux - 在 x64 位程序集中执行系统命令?

performance - 非时间负载和硬件预取器,它们可以一起工作吗?