本節重點關注所有使用 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 處理器通常用於高效能資料庫和網路伺服器。
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 位指令運算元。
32 位標誌暫存器和指令指標暫存器分別稱為 eflags 和 eip。此外,還有一些 x86 處理器用於多**處理的特殊暫存器:
通用暫存器
在《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
還有一些需要記住的細節:
32位x86處理器架構
我們看看32 位 x86 處理器的基本架構特點。這些處理器包括了 intel ia 32 系列中的成員和所有 32 位 amd 處理器。x86 處理器有三個主要的操作模式 保護模式 實位址模式和系統管理模式 以及乙個子模式 虛擬 8086 virtual 8086 模式,這是保護模式的特殊情況。以下...
X86處理器架構
包含有暫存器 算術邏輯單元 控制單元 時鐘位址 資料 控制匯流排1 將想要讀讀取的值的位址放在位址匯流排上。2 設定處理器rd 讀取 引腳 改變rd的值 3 等待乙個時鐘週期給儲存器晶元進行響應。4 將資料從資料匯流排複製到目標運算元。1 cpu從被稱為指令佇列的記憶體區域取得指令,之後立即增加指令...
64位處理器與32位處理器的區別
第二,要求配置不同。64位作業系統只能安裝在64位電腦上 cpu必須是64位的 同時需要安裝64位常用軟體以發揮64位 x64 的最佳效能。32位作業系統則可以安裝在32位 32位cpu 或64位 64位cpu 電腦上。當然,32位作業系統安裝在64位電腦上,其硬體恰似 大馬拉小車 64位效能就會大...