+ -
当前位置:首页 → 问答吧 → 关于__KERNEL_CS,__KERNEL_DS,__USER_CS,__USER_DS宏定义

关于__KERNEL_CS,__KERNEL_DS,__USER_CS,__USER_DS宏定义

时间:2010-11-25

来源:互联网

  1. #define GDT_ENTRY_DEFAULT_USER_CS   14
  2. #define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS * 8 + 3)

  3. #define GDT_ENTRY_DEFAULT_USER_DS   15
  4. #define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS * 8 + 3)

  5. #define GDT_ENTRY_KERNEL_BASE   12

  6. #define GDT_ENTRY_KERNEL_CS     (GDT_ENTRY_KERNEL_BASE + 0)
  7. #define __KERNEL_CS (GDT_ENTRY_KERNEL_CS * 8)

  8. #define GDT_ENTRY_KERNEL_DS     (GDT_ENTRY_KERNEL_BASE + 1)
  9. #define __KERNEL_DS (GDT_ENTRY_KERNEL_DS * 8)
复制代码
关于上面几个数字,我表示看不懂。谁能够解释一下的?在文件include/asm-x86/segment_32.h中。

作者: L_kernel   发布时间: 2010-11-25

两行一组,第一行指段描述符在GDT中的index,第二行指将放到段寄存器中的内容。

因为段寄存器的高13位表index,低3位表权限,所以把index左移3位( 乘8 ),再设置权限。

作者: tempname2   发布时间: 2010-11-26