orange/s 一个操作系统的实现 笔记

2021-09-02  本文已影响0人  onedam
image.png

作者 这个不难理解. 实在是侥幸 .
因为这个地址间距 是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
上一篇 下一篇

猜你喜欢

热点阅读