Merge pull request #133 from NeoCui/master

fix typo
This commit is contained in:
Dongliang Mu
2017-08-01 16:17:37 -04:00
committed by GitHub

View File

@@ -84,7 +84,7 @@ vga=<mode>
* 某个数据类型所占用的字节数
* `__alignof__(type)` 返回对于请求的数据类型需要怎样的对齐方式 ( 根据我的了解这个是 gcc 提供的一个功能
* `n` 需要分配少个对应数据类型的对象
* `n` 需要分配少个对应数据类型的对象
下面是 `__get_heap` 函数的实现:
@@ -409,7 +409,7 @@ static void setup_idt(void)
}
```
上面的代码使用 `lidtl` 指令将 `null_idt` 所指向的中断描述符表引入寄存器 IDT。由于 `null_idt` 没有设定中断描述符表的长度(长度为 0 ),所以这段指令执行之后,实际上没有任何中断调用被设置成功(所有中断调用都是空的),在后面的章节中我们将看到正确的设置。`null_idt` 是一个 `gdt_ptr` 构的数据,这个结构的定义如下所示:
上面的代码使用 `lidtl` 指令将 `null_idt` 所指向的中断描述符表引入寄存器 IDT。由于 `null_idt` 没有设定中断描述符表的长度(长度为 0 ),所以这段指令执行之后,实际上没有任何中断调用被设置成功(所有中断调用都是空的),在后面的章节中我们将看到正确的设置。`null_idt` 是一个 `gdt_ptr` 构的数据,这个结构的定义如下所示:
```C
struct gdt_ptr {
@@ -434,7 +434,7 @@ struct gdt_ptr {
};
```
在上面的 `boot_gdt` 数组中,我们定义了代码,数据和 TSS 段的段描述符,因为我们并没有设置任何的中断调用(记得上面所的 `null_idt`吗?),所以 TSS 段并不会被使用到。TSS 段存在的唯一目的就是让 Intel 处理器能够正确进入保护模式。下面让我们详细了解一下 `boot_gdt` 这个数组,首先,这个数组被 `__attribute__((aligned(16)))` 修饰,这就意味着这个数组将以 16 字节为单位对齐。让我们通过下面的例子来了解一下什么叫 16 字节对齐:
在上面的 `boot_gdt` 数组中,我们定义了代码,数据和 TSS 段(Task State Segment, 任务状态段)的段描述符,因为我们并没有设置任何的中断调用(记得上面所的 `null_idt`吗?),所以 TSS 段并不会被使用到。TSS 段存在的唯一目的就是让 Intel 处理器能够正确进入保护模式。下面让我们详细了解一下 `boot_gdt` 这个数组,首先,这个数组被 `__attribute__((aligned(16)))` 修饰,这就意味着这个数组将以 16 字节为单位对齐。让我们通过下面的例子来了解一下什么叫 16 字节对齐:
```C
#include <stdio.h>