段描述符
作者:互联网
在保护模式中,不可避免的要用到数据段和代码段,堆栈段。
在menuetos32系统中,这些段的描述符定义在sys32.inc中的第122行到243行GDT之中。其中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