什么是 char FAR* ?

image.png

什么是 char FAR*char FAR* FAR*?

阅读 3.3k
2 个回答

远指针是包含“段选择子”的指针。
举例来说,在x86_32的保护模式中,内存在硬件层面必须分段;由“段选择子”(16位)加上段内偏移(32位)构成,称为全指针(48位)。用long jmp来跳转到远指针时,cpu切换到段选择子在gdt中指示的内存段来执行代码,同时刷新段选择器cs。故远指针通常被操作系统用于切换代码段(的权限),比如上下文切换。

如果是应用层程序,现代系统基本都会将用户进程的虚拟空间视作一个完整的段,故far pointer几乎无作用。您可以直接无视“far”标签。