我有内存布局(在增加内存地址中),例如:
代码段 (0-4k)、数据段(4k-8k)、堆栈段(8k-12k)、自定义数据段(12k-16k)。
我在自定义数据部分放置了一些特殊的数组和结构。
据我所知,数据段 (#DS)Selector 将用于任何与数据相关的编译器代码。
所以数据部分(4k-8k)默认情况下所有操作都有#DS。除了一些可以使用 ES 的 str op。喜欢:
mov $0xc00,%eax
addl $0xd, (%eax)
但是,我想使用 Extra Segment(#ES) 选择器进行 CustomData 访问。我将为具有不同 Base 和 Limit 的 ES 定义一个新的 GDT 条目。喜欢:
mov $0x3400,%eax
addl $0xd, %es:(%eax)
所以我的问题是:
GCC 是否有任何 x86 编译器标志,可用于告诉编译器使用 #ES 进行自定义数据部分代码访问。?
意思是,编译器标志将使用 #ES 为 CustomData 部分生成代码。?
提前致谢 !!