什麼是計算機體系結構中的保護執行?
保護執行是一種至少部分消除條件分支的方法。其思想是在體系結構中引入條件操作指令,並使用它們來替換條件分支。條件操作指令稱為保護指令。保護指令由兩部分組成,一部分是稱為保護的條件部分,另一部分是傳統的指令操作部分。例如,它可以表示為:
(guard) instruction
保護指令的執行取決於以下條件:如果指定的保護為真,則執行關聯的指令;如果保護結果為假,則指令的行為類似於 NOP。
例如,α 體系結構提供了條件移動指令,這些指令是保護指令,具有以下語法和語義 (DEC,1992):
cmovxx ra.rq, rb.rq, rc.wq cmovxx ra.rq, #b.ib, rc.wq
其中
xx 表示條件
ra.rq 是一個整數,儲存在暫存器 ra 中的只讀 64 位運算元
rb.rq 是一個整數,儲存在暫存器 rb 中的只讀 64 位運算元
rc.wq 是一個整數,儲存在暫存器 rc 中的只寫 64 位運算元
#b.ib 是一個整數 64 位字面量
此指令的操作如下。測試暫存器 ra。
指令助記符指定了保護執行的條件:
cmoveq // 如果暫存器 ra 的內容等於零,則 cmove
cmovge // 如果暫存器 ra 的內容大於或等於零,則 cmove
cmovgt // 如果暫存器 ra 的內容大於零,則 cmove
cmovlbc // 如果暫存器 ra 的低位為清零,則 cmove
cmovlbs // 如果暫存器 ra 的低位已設定,則 cmove
cmovle // 如果暫存器 ra 的內容小於或等於零,則 cmove
cmovlt // 如果暫存器 ra 的內容小於零,則 cmove
cmovne // 如果暫存器 ra 的內容不等於零,則 cmove
可以使用與相應條件分支中指定的條件相反的保護指令消除前向條件分支。例如,考慮以下程式碼序列
beq ra, label // if (ra)=0 branch to ‘label’ or rb, rb, rc // else move (rb) into rc
SPARC V9(1994)也提供了一些類似的條件移動指令。HP Precision Architecture(1985)以比 DEC α 更全面的方式引入了保護指令。在這裡,所有整數操作指令都是以下形式的保護指令
opcode.cond operands
給定的條件 (cond) 與操作的結果相關。如果指定的條件為真,例如,結果為正,則以下指令將被取消。
有兩種型別的保護執行,例如完全保護和受限保護。在完全保護中,所有指令都被假定為受保護的,而在受限保護中,只有操作指令(ALU 指令)具有受保護的形式。
這種受限形式的保護考慮了這樣一個事實,即在現有的體系結構中,指令程式碼空間通常受到擠壓,並且在大多數情況下,只有少數幾個額外的位可用於指定保護條件。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP