linux内核代码学习笔记(一)

来源:互联网 发布:店宝宝坑人软件 编辑:程序博客网 时间:2024/06/05 21:32

感觉有时学些忘些,记些笔记,免得总是翻书。

 

8086寻址

 

段(Segment)寻址模式---段地址部分使用16位的段选择符指定,其中14位可以选择214即16384个段。段内偏移地址部分使用32位

 

的值来指定,因此段内地址可以是0~4GB。即一个段的最大长度可达4GB。程序中由16位的段和32位的偏移构成的48位地址或长指针称为一

 

逻辑地址(虚拟地址)。80x86为段部分提供了6个存放段选择符的段寄存器:CS、DS、ES、SS、FS和GS。其中CS总是用于寻址

 

代码段,而堆栈段则专门使用SS段寄存器。在任何指定时刻由CS寻址的段称为当前代码段。此时EIP寄存器中包含了当前代码段内下一条要执行

 

指令的段内偏移地址。因此要执行指令的地址可表示成CS:[EIP]。由段寄存器SS寻址的段称为当前堆栈段。栈顶由ESP寄存器内容指定。因此

 

堆栈顶处地址是SS:[ESP]。

 

IA—32平台寄存器:

 

通用寄存器—8个32位寄存器(EAX, EBX, ECX, EDX, EDI, ESI, ESP, EBP),EAX、EBX、ECX、EDX可以通过16位和8位引

 

用,如AX为低16位,其中又分AL低8位,AH高8位。

 

段寄存器—6个16位寄存器

 

指令指针寄存器(EIP)

 

浮点数据寄存器—8个80位寄存器,用于浮点数学数据

 

控制寄存器—5个32位寄存器(CR0, CR1, CR2, CR3, CR4)

 

调试寄存器—8个32位寄存器,用于在调试处理器时包含的信息 

 

处理器使用IDTR寄存器来定位IDT表的位置,IDT表可以驻留在线性地址空间的任何地方。个寄存器中含有IDT表32位的基地址和16位

 

的长度(限长)值,共48位。LIDT和SIDT指令分别用于加载和保存IDTR寄存器的内容。

原创粉丝点击