GCC是GNU 的C 和C++ 编译器。
GCC 能够编译三种语言:C、C++ 和Object C。
Linux 中最重要的软件开发工具是GCC。
GDT表
32位CPU有全局描述符表(GDT)与局部描述符表(LDT)
32位CPU的段寄存器还是16位的
实模式和保护模式
在32位的CPU中,就有两种工作模式,一种是16位的模式,称之为实模式;另一种是32位的模式,称之为保护模式(CR0成为1)。
在32位的CPU中,内存管理有分段与分页两种模式,分页主要用于实现虚拟内存
32位CPU有全局描述符表(GDT)与局部描述符表(LDT)之分。全局描述符表就指此表可被所有的程序访问。
在32位的CPU中,段寄存器并不是表示段的基址,而是表示一个指向描述符表的索引,用来指出此程序用到的段的描述符在描述符表的位置。然后,访问此描述符表取出描述符,由此才得到有关段的属性信息。32位CPU的段寄存器器还是16位的,不过,它用13位来作段描述符表的索引,因此,我们可以定义的最大段数为2^13=8192个。
在32位的保护模式下,内存是通过段描述符表来访问的,因此,当我们转到32位模式之前,我们需要创建好段与段描述符表。
段寄存器
段寄存器都是16位的
CS--Code Segment 代码段寄存器
DS--Data Segment 数据段寄存器
SS--Stack Segment 堆栈段寄存器
ES--Extend Segment 附加段寄存器
FS--数据段寄存器
GS--数据段寄存器
FS段寄存器设成可访问4GB内存的基址和界限
标志寄存器
标志寄存器在8086中有一个16位用于反映处理器的状态和运算结果的某些特征。其中,包括9个标志位,如图2.3所示。
(1)运算结果标志--主要用于反映处理器的状态和运算结果特征
CF--Carry Flags 进位标志
ZF--Zero Flag 零标志
SF--Sign Flag 符号标志
OF--Over Flag 溢出标志
PF--Parity Flag 奇偶标志
AF--Auxiliary Carry Flag 辅助进位标志
(2)状态控制标志--它控制着处理器的操作,要通过专门的指令才能使状态控制标志发生变化
DF--Direction Flag 方向标志
IF--Interrupt Flag 中断允许标志
TF--Trap Flag 追踪标志
Windows CE是一个32位的操作系统,所以其虚拟内存的大小是4GB(2的32次方)。Windows CE把这4GB虚拟内存空间分为低地址2GB和高地址2GB。应用程序使用的地址空间是低地址2GB,高地址2GB专供Windows CE内核使用。