64位x86-64处理器架构
本節重點關注所有使用 x86-64 指令集的 64 位處理器的基本架構細節。這些處理器包括 Intel 64 和 AMD64 處理器系列。指令集是已討論的 x86 指令集的 64 位擴展。以下為一些基本特征:
?
1) 向后兼容 x86 指令集。
2) 地址長度為 64 位,虛擬地址空間為 2 64 字節。按照當前芯片的實現情況,只能使用地址的低 48 位。
3) 可以使用 64 位通用寄存器,允許指令具有 64 位整數操作數。
4) 比 x86 多了 8 個通用寄存器。
5) 物理地址為 48 位,支持高達 256TB 的 RAM。
另一方面,當處理器運行于本機 64 位模式時,是不支持 16 位實模式或虛擬 8086 模式的。(在傳統模式(legacy mode)下,還是支持 16 位編程,但是在 Microsoft Windows 64 位版本中不可用。)
注意盡管 x86-64 指的是指令集,但是也可以將其看作是處理器類型。學習匯編語言時,沒有必要考慮支持 x86-64 的處理器之間的硬件實現差異。
第一個使用 x86-64 的 Intel 處理器是 Xeon,之后還有許多其他的處理器,包括 Core i5 和 Core i7。AMD 處理器中使用 x86-64 的例子有 Opteron 和 Athlon 64。
另一個為人所知的 64 位 Intel 架構是 IA-64,后來被稱為 Itanium。 IA-64 指令集與 x86 和 x86-64 完全不同,Itanium 處理器通常用于高性能數據庫和網絡服務器。
64 位操作模式
Intel 64 架構引入了一個新模式,稱為 IA-32e。從技術上看,這個模式包含兩個子模式:兼容模式(compatibility mode)和 64 位模式(64-bit mode)。不過它們常常被看做是模式而不是子模式,因此,先來了解這兩個模式。
1) 兼容模式
在兼容模式下,現有的 16 位與 32 位應用程序通常不用進行重新編譯就可以運行。但是,16 位 Windows(Win16)和 DOS 應用程序不能運行在 64 位 Microsoft Windows 下。
與早期 Windows 版本不同,64 位 Windows 沒有虛擬 DOS 機器子系統來利用處理器的功能切換到虛擬 8086 模式。
2) 64 位模式
在 64 位模式下,處理器執行的是使用 64 位線性地址空間的應用程序。這是 64 位 Microsoft Windows 的原生模式,該模式能使用 64 位指令操作數。
基本 64 位執行環境
64 位模式下,雖然處理器現在只能支持 48 位的地址,但是理論上,地址最大為 64 位。從寄存器來看,64 位模式與 32 位最主要的區別如下所示:
- 16 個 64 位通用寄存器(32 位模式只有 8 個通用寄存器)
- 8 個 80 位浮點寄存器
- 1 個 64 位狀態標志寄存器 RFLAGS (只使用低 32 位)
- 1 個 64 位指令指針寄存器 RIP
32 位標志寄存器和指令指針寄存器分別稱為 EFLAGS 和 EIP。此外,還有一些 x86 處理器用于多媒體處理的特殊寄存器:
- 8 個 64 位 MMX 寄存器
- 16 個 128 位 XMM 寄存器(32 位模式只有 8 個 XMM 寄存器)
通用寄存器
在《32位x86處理器》一節中介紹 32 位處理器時介紹過通用寄存器,它們是算術運算、數據傳輸和循環遍歷數據指令的基本操作數。通用寄存器可以訪問 8 位、16 位、32 位或 64 位操作數(需使用特殊前綴)。
64 位模式下,操作數的默認大小是 32 位,并且有 8 個通用寄存器。但是,給每條指令加上 REX(寄存器擴展)前綴后,操作數可以達到 64 位,可用通用寄存器的數量也增加到 16 個:32 位模式下的寄存器,再加上 8 個有標號的寄存器,R8 到 R15。下表給出了 REX 前綴下可用的寄存器。
| 8 位 | AL、BL、CL、DL、DIL、SIL、BPL、SPL、R8L、R9L、R10L、R11L、R12L、R13L、R14L、R15L |
| 16 位 | AX、BX、CX、DX、DI、SI、BP、SP、R8W、R9W、R10W、R11W、R12W、R13W、R14W、R15W |
| 32 位 | EAX、EBX、ECX、EDX、EDI、ESI、EBP、ESP、R8D、R9D、R10D、R11D、R12D、R13D、R14D、R15D |
| 64 位 | RAX、RBX、RCX、RDX、RDI、RSI、RBP、RSP、R8、R9、R10、R11、R12、R13、R14、R15 |
還有一些需要記住的細節:
- 64 位模式下,單條指令不能同時訪問寄存器高字節,如 AH、BH、CH 和 DH,以及新字節寄存器的低字節(如 DIL)。
- 64 位模式下,32 位 EFLAGS 寄存器由 64 位 RFLAGS 寄存器取代。這兩個寄存器共享低 32 位,而 RFLAGS 的高 32 位是不使用的。
- 32 位模式和 64 位模式具有相同的狀態標志。
- 下一篇:1.11?字符在計算機中是如何表示的
1.12?匯編語言布爾表達式
處理器架構
2.1?CPU處理器架構
2.2?32位x86處理器架構
2.3?x86-64處理器架構
2.4?x86計算機組件
匯編語言基礎
3.1?第一個匯編語言程序
3.2?匯編語言常量
3.3?匯編語言保留字
3.4?匯編語言標識符
3.5?匯編語言偽指令
總結
以上是生活随笔為你收集整理的64位x86-64处理器架构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java md5 算法实现_Java 实
- 下一篇: 32位x86处理器架构