處理器系列之PowerPC指令集
PowerPC 應用級指令集
本文引用地址:http://www.j9360.com/article/201801/374368.htm表 1 列出了不同的指令類別以及每類的指令類型。
表 1. 指令類別


指令解析
所有指令的編碼長度都是 32 位。PowerPC 的位編號方式與大部分其他定義相反:第 0 位是最重要的位,第 31 位是最不重要的位。指令首先由一個字段中較高的 6 位進行解碼,這 6 位稱為 主要操作碼(primary opcode)。其余 26 位包含的字段分別是操作數說明、立即(immediate)操作數以及擴展的操作碼(opcode),而且這些還可能是保留的位或字段。表 2 列出了 PowerPC 定義的基本指令格式。
表 2. PowerPC 指令格式

D-form
這一指令格式提供至多兩個寄存器作為源操作數,一個立即源,至多兩個寄存器作為目的操作數。這一指令格式的一些變種使用部分目的和源寄存器操作數說明符作為立即字段或作為擴展的操作碼。
X-form
這一指令格式提供至多兩個寄存器作為源操作數,至多兩個目的操作數。這一指令格式的一些變種使用部分目的和源寄存器操作數說明符作為立即字段或作為擴展的操作碼。
A-form
這一指令格式提供至多三個寄存器作為源操作數,以及一個目的操作數。這一指令格式的一些變種使用部分目的和源寄存器操作數說明符作為立即字段或作為擴展的操作碼。
BD-form
條件轉移指令使用的是這一指令格式。BO 指令字段指定了條件的類型;BI 指令字段指定了以哪個 CR 位作為條件;BD 字段用作轉移位置。AA 位指定了轉移是絕對轉移還是相對轉移。換名話說,轉移目標地址是立即字段的值,還是立即字段的值與轉移地址的和。LK 位指定了下一個順序指令的地址是否作為子例程調用的返回地址保存在鏈接寄存器中。
I-form
無條件轉移指令使用這一指令格式。由于是無條件的,BD 格式中的 BO 和 BI 字段改變為另外的轉移位置,以構成 LI 指令字段。同 BD 格式一樣,這一指令格式也支持 AA 和 LK 位。
如前所述,這些指令格式各有其變種。不過,這些格式是對大部分 PowerPC 指令集編碼結構的最好描述。
轉移指令
PowerPC 為控制流程提供了一組指令,包括:
條件和無條件轉移指令。
“遞減計數和如果是零或者非零時轉移”的能力。
絕對轉移和相對轉移。
使用鏈接寄存器或計數寄存器來指定轉移目標地址的轉移指令。
所有的轉移指令都具備保存后繼順序指令地址的能力,包括到鏈接寄存器的轉移。條件寄存器 32 位中的任意一位都可以指定為條件轉移的條件,并可以指定 CR 位是否必須為 0 或 1 時轉移條件才成立。
條件寄存器指令
PowerPC 提供了一組用于對 CR 的特定位執行布爾操作和對 CR 字段進行拷貝的指令。它允許組合多個轉移條件,這樣可以減少代價高昂的條件轉移的數量。表 3 列出了 PowerPC CR 邏輯指令。
評論