
作者 这个不难理解. 实在是侥幸 .
因为这个地址间距 是8个字节(每个gdt项规定8个字节.) 这样
8 二进制 1 0 00 rpl ti 都是0. 则指向gdt index 为1的第二项. 就正确了.
gs 是第二项相差16字节. 0x10的二进制 1 0000 index为二进制10 是2 是gdt的第三项. ca
[SECTION .gdt]
; GDT
;段基址, 段界限 , 属性
LABEL_GDT: Descriptor 0, 0, 0 ; 空描述符
LABEL_DESC_CODE32: Descriptor 0, SegCode32Len - 1, DA_C + DA_32; 代码段
LABEL_DESC_VIDEO: Descriptor 0B8000h, 0ffffh, DA_DRW ; 显存首地址
; GDT 选择子 ;;feng 草这里侥幸啊. 亲自在草稿纸上画了下 二进制位
;3位最大值是8 nnd 根据调试(输入sreg) gs 0x10 二进制 1 0 00 0 index 2
SelectorCode32 equ LABEL_DESC_CODE32 - LABEL_GDT
SelectorVideo equ LABEL_DESC_VIDEO - LABEL_GDT
网友评论