您的位置:首页 > 编程语言

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

2016-03-29 23:09 239 查看

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. 资料

保护模式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: