80386的各种寄存器一览
生活随笔
收集整理的這篇文章主要介紹了
80386的各种寄存器一览
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
注:本分類下文章大多整理自《深入分析linux內(nèi)核源代碼》一書,另有參考其他一些資料如《linux內(nèi)核完全剖析》、《linux c 編程一站式學(xué)習(xí)》等,只是為了更好地理清系統(tǒng)編程和網(wǎng)絡(luò)編程中的一些概念性問題,并沒有深入地閱讀分析源碼,我也是草草翻過這本書,請有興趣的朋友自己參考相關(guān)資料。此書出版較早,分析的版本為2.4.16,故出現(xiàn)的一些概念可能跟最新版本內(nèi)核不同。
此書已經(jīng)開源,閱讀地址?http://www.kerneltravel.net
1、通用寄存器(32位)
??EAX:一般用作累加器 ??EBX:一般用作基址寄存器(Base) ??ECX:一般用來計數(shù)(Count) ??EDX:一般用來存放數(shù)據(jù)(Data) ??ESP:一般用作堆棧指針(Stack Pointer) ??EBP:一般用作基址指針(Base Pointer) ??ESI:一般用作源變址(Source Index) ??EDI:一般用作目標(biāo)變址(Destinatin Index)
2、段寄存器(16位)
??CS:代碼段寄存器 ??DS:數(shù)據(jù)段寄存器 ??SS:堆棧段寄存器 ??ES、FS 及GS:附加數(shù)據(jù)段寄存器
這些段寄存器中存放的不再是某個段的基地址,而是某個段的選擇符(Selector)。因為16 位的寄存器無法存放32 位的段基地址,段基地址只好存放在段的描述符(Descriptor)中。
3、標(biāo)志和控制寄存器(32位)
標(biāo)志寄存器?EFLAGS 指令指針?EIP 機(jī)器狀態(tài)字?CR0 Intel?預(yù)留?CR1 頁故障地址?CR2 頁目錄地址?CR3
指令指針寄存器(EIP)中存放下一條將要執(zhí)行指令的偏移量(offset ),這個偏移量是相對于目前正在運行的代碼段寄存器(CS)而言的。偏移量加上當(dāng)前代碼段的基地址,就形成了下一條指令的地址。
4、系統(tǒng)地址寄存器
??全局描述符表寄存器GDTR(Global Descriptor Table Register ),是48 位寄存器,用來保存全局描述符表(GDT)的32 位基地址和GDT 的大小(16位)。
??中斷描述符表寄存器IDTR(Interrupt Descriptor Table Register),是48 位寄存器,用來保存中斷描述符表(IDT)的32 位基地址和IDT 的大小(16位)。
??局部描述符表寄存器LDTR(Local Descriptor Table Register ),是16 位寄存器,保存局部描述符表LDT 段的選擇符。
??任務(wù)狀態(tài)寄存器TR(Task State Register)是16 位寄存器,用于保存任務(wù)狀態(tài)段TSS 段的16 位選擇符。
5、調(diào)試寄存器和測試寄存器(32位)
80386 有兩個32 位的測試寄存器TR6 和TR7。TR6 是測試命令寄存器,其內(nèi)存放測試控制命令。TR7 是數(shù)據(jù)寄存器,其內(nèi)保存轉(zhuǎn)換旁路緩沖器測試的數(shù)據(jù)。
總結(jié)
以上是生活随笔為你收集整理的80386的各种寄存器一览的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云桌面产品介绍
- 下一篇: PHP----------线程安全和非线