其他分享
首页 > 其他分享> > 段描述符

段描述符

作者:互联网

在保护模式中,不可避免的要用到数据段和代码段,堆栈段。

在menuetos32系统中,这些段的描述符定义在sys32.inc中的第122行到243GDT之中。其中ring3的代码段和数据段如下:

    ring3_code_l:

      dw 0xffff
      dw 0x0000
      db 0x00
      dw 11011111b *256 +11111010b
      db 0x00

    ring3_data_l:

      dw 0xffff
      dw 0x0000
      db 0x00
      dw 11011111b *256 +11110010b
      db 0x00

其中,dw 11011111b *256 +11111010b和dw 11011111b *256 +11110010b是描述符的属性。

它们于GDT的偏移量则定义在了kernel.asm中的第128行到144行之间。如下:

    os_data     equ     os_data_l-gdts ; GDTs
    os_code      equ      os_code_l-gdts
    int_code      equ      int_code_l-gdts
    int_data          equ        int_data_l-gdts
    tss0sys     equ     tss0sys_l-gdts
    graph_data         equ      3+graph_data_l-gdts
    tss0        equ      tss0_l-gdts
    tss0i       equ      tss0i_l-gdts
    tss0t       equ      tss0t_l-gdts
    app_code      equ      3+app_code_l-gdts
    app_data       equ                 3+app_data_l-gdts
    ring3_data          equ                 3+ring3_data_l-gdts
    ring3_code         equ                 3+ring3_code_l-gdts
              ring2_data          equ                  2+ring2_data_l-gdts
              ring2_code         equ                  2+ring2_code_l-gdts
    ring1_data          equ                 1+ring1_data_l-gdts
    ring1_code         equ                 1+ring1_code_l-gdts

标签:gdts,code,ring3,equ,描述符,dw,data
来源: https://www.cnblogs.com/menuetos32/p/16685235.html