首頁 >常見問題 >應用程式的指令可以分成為什麼

應用程式的指令可以分成為什麼

藏色散人
藏色散人原創
2021-02-08 11:11:1396785瀏覽

應用程式的指令可以分為中央處理器即CPU的指令集以及用於向作業系統請求特定的服務這兩類;中央處理器操作指令的處理流程大概分為取指、譯碼、執行、存取、寫回和更新PC。

應用程式的指令可以分成為什麼

本文操作環境:windows7系統,DELL G3電腦。

理論上說,應用程式裡的指令可以分成中央處理器(CPU)的指令集以及用於向作業系統請求特定的服務這兩類。

中央處理器(CPU,Central Processing Unit)是一塊超大規模的積體電路,是電腦的運算核心(Core)和控制核心( Control Unit)。它的功能主要是解釋電腦指令以及處理電腦軟體中的資料。

中央處理器主要包括運算元(算術邏輯運算單元,ALU,Arithmetic Logic Unit)和高速緩衝記憶體(Cache)及實現它們之間聯繫的資料(Data)、控制及狀態的匯流排( Bus)。它與內部記憶體(Memory)和輸入/輸出(I/O)設備合稱為電子電腦三大核心元件。

CPU操作指令的處理流程大概分為:取指、譯碼、執行、訪存、寫回等幾步。每條指令需要1~6個位元組不等,這取決於需要哪些欄位。每條指令的第一個位元組表示指令的類型:高4位是代碼部分(例:6為整數類操作指令),低4位是功能部分(例:1為整數類中的減法指令) 61合起來即為sub指令。

處理指令流程

指令集的一個重要性質就是位元組編碼必須有唯一的解釋。任意一個位元組序列要麼是一個唯一的指令序列的編碼,要麼就不是一個合法的位元組序列。因為每條指令的第一個位元組有唯一的程式碼和功能組合,給定這個位元組,我們就可以決定所有其他附加位元組的長度和意義。

每條指令需要1~6個位元組不等,取決於需要哪些欄位。每條指令的第一個位元組表示指令的類型:高4位是代碼部分(例:6為整數類操作指令),低4位是功能部分(例:1為整數類中的減法指令) 61合起來即為sub指令。

下面是處理每個指令的流程圖:

取指(fetch)

取值階段從記憶體讀取指令位元組,放到指令記憶體(CPU中)中,位址為程式計數器(PC)的值。它按順序的方式計算當前指令的下一指令的位址(即PC的值加上已取出指令的長度)。

譯碼(decode)

ALU從暫存器檔案(通用暫存器的集合)讀入最多兩個運算元。 (即一次最多讀取兩個暫存器中的內容)

執行(execute)

在執行階段會根據指令的類型,將算數/邏輯單元(ALU)用於不同的目的。對其他指令,它會作為一個加法器來計算增加或減少棧指針,或者計算有效地址,或者只是簡單地加0,將一個輸入傳遞到輸出。

條件碼暫存器(CC)有三個條件位元。 ALU負責計算條件碼新值。當執行一條跳轉指令時,會根據條件碼和跳躍型別來計算分支訊號cnd。

存取(memory)

存取階段,資料記憶體(CPU中)讀出或寫入一個記憶體字。指令和資料記憶體存取的是相同的記憶體位置,但是用於不同的目的。

寫回(write back)

寫回階段最多可以寫兩個結果到暫存器檔案。暫存器檔案有兩個寫入埠。埠E用來寫ALU計算出來的值,而連接埠M用來寫從資料記憶體讀取的值。

更新PC(PC update)

根據指令碼和分支標誌,從前幾步所得的訊號值中,選出下一個PC的值。

更多相關知識,請造訪PHP中文網

以上是應用程式的指令可以分成為什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn