什么是 char FAR* ?

image.png

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

阅读 3.2k
2 个回答

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进