指令簡述及分類

2022-09-10 08:15:09 字數 2070 閱讀 5105

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

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

​ 又叫架構——intel上用x86、手機上用的是arm架構

一條指令就是機器語言的乙個語句,是一組二進位制**

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
前面部分是跟三位址完全一樣。

特殊之處

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

儲存字長:乙個儲存單元中二進位制**的位數(通常和mdr位數相同)

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

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

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

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

顯然,操作碼的數量可以顯示這個系統的能夠操作多少個指令指令系統中所有指令的操作碼長度相同。

n位 ——> 2^n條指令
特點:控制器的解碼電路設計簡單,但是靈活性低。

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

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

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

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

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

load	//把資料: 儲存器 ——> 暫存器 

store //把資料: 暫存器 ——> 儲存器

算術:加減乘除

邏輯:與或非

算術移位、邏輯移位、迴圈移位
無條件轉移	jmp

條件轉移 jz:結果為0;jo:結果溢位;jc:結果有進製

呼叫和返回 call、return

陷阱

為什麼會有轉移操作?

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

cpu暫存器與io埠之間的資料傳送(埠即io介面中的暫存器)

事件冒泡簡述及應用

事件 或者事件委託的含義等同於事件冒泡。事件捕獲方式 描述事件觸發時序問題 有三種 1 ie從裡到外 inside outside 的冒泡型事件。2 netscape4.0從外到裡 outside inside 的捕獲型事件。3 dom事件流,先從外到裡,再從裡到外回到原點 outside insi...

DOM概述及分類

一 結點 結點是把具有相同屬性的html元素組成.節點分類 父節點 parentnode 子節點 firstchild lastchild childnodes 兄弟節點 nextsibling previoussibling 包含型別 名稱 值。nodetype 分類,元素結點 1,屬性結點 2,...

harbor安裝簡述及故障記錄

2.安裝docker ce,docker compose 3.解壓檔案包 4.更改配置檔案harbor.cfg 修改hostname 可以用網域名稱 注意 直接修改,不要把原來注釋,然後新增。啟動檔案會過濾原來的網域名稱,會認為你沒有更改。5.install.sh 進行初始化 6.配置nginx實現...