assembly - linux g++ x64 通过 FS 段寄存器访问内存

标签 assembly g++ 64-bit x86-64

在 linux、amd64 上使用 g++,我知道线程本地存储是通过段寄存器 GS 访问的。 我想有一种方法可以指示编译器通过 FS 寄存器访问其他内存。 那个内存是一个垃圾收集区,我想和其他银行随意切换。 有可能做到吗? (我想这应该是因为线程本地存储是可能的)。

最佳答案

我将探讨的部分答案是 Clang

http://llvm.org/releases/3.3/tools/clang/docs/LanguageExtensions.html

“用地址空间 #256 注释指针使其成为相对于 X86 GS 段寄存器的代码生成,地址空间 #257 使其相对于 X86 FS 段。请注意,这是一个非常非常低的- 级别的功能,只有当你知道自己在做什么时才应该使用(例如在操作系统内核中)。”

关于assembly - linux g++ x64 通过 FS 段寄存器访问内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27983448/

相关文章:

c++ - 64 位模运算的奇怪性能行为

c++ - g++ -Wreorder 的意义何在?

c++ - 有没有办法在 g++/clang++ 中使用自定义修改?

c - AMD64 指令指针中的奇怪行为

c - 在mplab中合并汇编和C

c++ - 列出gdb中类的所有功能

c# - 如何配置我的项目以在 64 位和 32 位计算机上运行

java - Windows Server 2008 上的 64 位 Java 8 或多或少使用整个服务器 CPU

linux - 如何在 linux 下用 nasm 和 gcc 编译这个 asm 代码?

linux - 比较字符与 Intel x86_64 汇编