指令簡述及分類


思維導圖

指令(又稱機器指令)

指示計算機執行某種操作的命令,是計算機運行的最小功能單位。

指令集、指令系統:一台計算機上的所有指令的集合

​ 又叫架構——Intel上用X86、手機上用的是ARM架構

指令格式

一條指令就是機器語言的一個語句,是一組二進制代碼

有兩部分:操作碼(OP)、地址碼(A)  //四種分類從此發散:OP、A、OP+A各自長度、OP的目的

操作碼:做什么? 地址碼:對誰動手?

分類

按地址碼數目

地址碼數目不同而分類:0-4地址指令

特別:停機指令是不需要地址碼的 檢測到操作數就ok了就停機

零地址指令

1、不需要操作數,如空操作、停機、關中斷等指令

2、堆棧計算機買兩個操作數隱含在棧頂、次棧頂,計算結果壓回棧頂。

就是基於數據結構中的后綴表達式形成的

例:

數據結構的“后綴表達式”

A + B - C * D	//在一個棧中,遇到A、B等數據就存入,遇到運算符就運算,然后將運算結果再存入棧。零地址指令在這里就相當於“運算符”

一地址指令

1、只需要單操作數,如加1、減1,取反、求補

	OP(A1) → A1		//完成一條指令需要三次訪存,,取指令、讀取A1、寫入A1

2、需要兩個操作數,但是其中一個操作數隱含在某個寄存器

A1是指某個主存的地址,(A1)表示這個地址中所指向的內容。

這里隱含在ACC

(ACC)OP(A1) → ACC	//CPU取出一個操作數,然后操作再返回A1所指向的地址。ACC是累加寄存器,因為最后是存到ACC,所以不需要第二次訪存,所以只要兩次
					完成一條指令需要訪問兩次內存:取值、讀取A1

二地址指令

OP|A1(目的操作數)|A2(源操作數)

常用於需要兩個操作數的算術運算、邏輯運算

(A1)OP(A2) → A1			//訪存次數4次:取指令、讀A1、讀A2、寫到A1

三地址指令

OP|A1|A2|A3(結果)

常常用於需要兩個操作數的算術運算、邏輯運算

(A1)OP(A2) → A3			//訪存次數4次:取指令、讀A1、讀A2、寫到A3

四地址指令

OP|A1|A2|A3(結果)|A4(下一條地址)
前面部分是跟三地址完全一樣。
(A1)OP(A2) → A3		A4=下一條要執行的指令的地址 	//訪存次數4次:取指令、讀A1、讀A2、寫到A3
特殊之處

​ 正常情況下:取指令后PC+1,就指向了下一條指令

​ 四地址指令:取指令后,將PC的值修改為A4所指的地址。

按指令長度

指令字長:一條指令的總長度

機器字長:CPU進行一次整數運算所能處理的二進制數據的位數(通常與ALU相關)

存儲字長:一個存儲單元中二進制代碼的位數(通常和MDR位數相同)

一些通用叫法

半字長指令、單字長指令、雙字長指令 ——指令長度是機器字長的多少倍

指令字長會影響取指令所需要的時間。

例:

機器字長 = 存儲字長 = 16bit,取一條雙字長指令

——雙字長是32bit ,取一條雙字長指令就需要兩次訪存。

按照操作碼長度

顯然,操作碼的數量可以顯示這個系統的能夠操作多少個指令

定長操作碼:

指令系統中所有指令的操作碼長度相同。

n位 ——> 2^n條指令

特點:控制器的譯碼電路設計簡單,但是靈活性低。

另:地址碼的位數的影響——指令總長度不變,地址碼數量越多,尋址能力越差,太多了效率就下降了。

可變長操作碼:

指令系統中各指令的操作碼長度有變化

特點:設計復雜,靈活度高。

定長指令字結構 + 可變長操作碼 ——> 拓展操作碼指令格式

按照操作類型

其實移位操作也是邏輯操作的一部分

1、數據傳送【進行主存和CPU之間的數據傳送】

LOAD	//把數據: 存儲器 ——> 寄存器 
STORE	//把數據: 寄存器 ——> 存儲器

2、算術邏輯操作【運算】

算術:加減乘除
邏輯:與或非

3、移位操作【運算】

算術移位、邏輯移位、循環移位

4、轉移操作【改變程序執行的順序】

無條件轉移	JMP
條件轉移	JZ:結果為0;JO:結果溢出;JC:結果有進位
調用和返回	CALL、RETURN
陷阱

為什么會有轉移操作?

一般程序是順序執行,但是有else if這種語句,所以要讓程序流改變,就出現了轉移指令,改變PC的值。

5、輸入輸出操作【CPU和I/O設備之間的數據傳送】

CPU寄存器與IO端口之間的數據傳送(端口即IO接口中的寄存器)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM