XV6操作系统 学习笔记(源代码共9100行)

1. 说明: 此文用来记录学习xv6过程中收集的一些资料。

2. 代码片段

  • asm 伪指令
define SEG_NULLASM  \
    .word 0, 0;     \
    .byte 0, 0, 0, 0

说明:.word 就地生成一个指定长度的数, .byte就地生成一个字节的数。上述代码生成两个字长度的数,接着生成4个字节的数。

0660 #define SEG_ASM(type, base, lim) \
0661    .word (((lim) >> 12) & oxffff), ((base) & oxffff); \
0662    .byte (((base) >> 16 & oxff), (ox90 | (type)),     \
0663          (0xC0 | (((lim) >> 28) & 0xf)), (((base) >> 24) & 0xff)

0665 #define STA_X 0x8
0668 #define STA_W 0x2
0669 #define STA_R 0x2

根据此扩展gdt代码段有

8981 .p2align 2
8982 gdt:
8983    SEG_NULLASM
8984    SEG_ASM(STA_X | STA_R, 0x0, 0xffffffff) # code seg
8985    SEG_ASM(STA_W, 0x0, 0xffffffff) # data seg

# 扩展后
gdt:
    .word 0, 0;
    .byte 0, 0, 0, 0;
    .word 0xffff, 0;
    .byte 0, 0x9a, 0xcf, 0
    .word 0xffff, 0;
    .byte 0, 0x92, 0xcf, 0 

3. 资料

  • 保护模式

你可能感兴趣的:(学习笔记,资料,MIT,XV6)