文章目錄
首先我們再回憶一下現(xiàn)代計(jì)算機(jī)的結(jié)構(gòu)
搞錯(cuò)了,再來! 現(xiàn)代計(jì)算機(jī)的結(jié)構(gòu)
這次就開搞控制器!
學(xué)會指令系統(tǒng)就可以更精進(jìn)之前搞的典型過程了:
指令格式 指令的定義
指令(又稱機(jī)器指令):是指示計(jì)算機(jī)執(zhí)行某種操作的命令,是計(jì)算機(jī)運(yùn)行的最小功能單位。
一臺計(jì)算機(jī)的所有指令的集合構(gòu)成該機(jī)的指令系統(tǒng),也稱為指令集。
注:一臺計(jì)算機(jī)只能執(zhí)行自己指令系統(tǒng)中的指令,不能執(zhí)行其他系統(tǒng)的指令。
例如:x86 架構(gòu)、ARM架構(gòu)之間不能互相執(zhí)行對方架構(gòu)系統(tǒng)的指令。
指令格式
一條指令就是機(jī)器語言的一個(gè)語句指令格式是指,它是一組有意義的二進(jìn)制代碼。
一條指令通常要包括操作碼字段和地址碼字段兩部分(如下圖所示):
操作碼就是要表達(dá)用戶要干什么?
比如:停機(jī)中斷、求反求補(bǔ)、加減乘除……
地址碼就是要說明對誰進(jìn)行操作?
比如:不需要操作對象、需要一個(gè)操作對象、需要兩個(gè)操作對象……
其中 一條指令可能包含 0個(gè)、1個(gè)、2個(gè)、3個(gè)、4個(gè) 地址碼…
根據(jù)地址碼數(shù)目不同,可以將指令分為 零地址指令、一地址指令、二地址指令…
零地址指令
不需要操作數(shù),如空操作、停機(jī)、關(guān)中斷等指令堆棧計(jì)算機(jī)指令格式是指,兩個(gè)操作數(shù)隱含存放在棧頂和次棧頂,計(jì)算結(jié)果壓回棧頂 一地址指令
只需要單操作數(shù),如加1、減1、取反、求補(bǔ)等
指令含義:OP(A1)→A1 ,完成一條指令需要3次訪存:取指→ 讀A1 →寫A1需要兩個(gè)操作數(shù),但其中一個(gè)操作數(shù)隱含在某個(gè)寄存器(如隱含在ACC)
指令含義: (ACC)OP(A1)→ACC,完成一條指令需要2次訪存:取指→ 讀A1
注:A1 指某個(gè)主存地址, (A1)表示 A1 所指向的地址中的內(nèi)容
二、三地址指令
常用于需要兩個(gè)操作數(shù)的算術(shù)運(yùn)算、邏輯運(yùn)算相關(guān)指令
指令含義:(A1)OP(A2)→A1
完成一條指令需要訪存4次,取指→讀A1→讀A2→寫A1
常用于需要兩個(gè)操作數(shù)的算術(shù)運(yùn)算、邏輯運(yùn)算相關(guān)指令
指令含義:(A1)OP(A2)→A3
完成一條指令需要訪存4次,取指→ 讀A1→讀A2 →寫A3
四地址指令
指令含義:(A1)OP(A2)→A3,A4=下一條將要執(zhí)行指令的地址
完成一條指令需要訪存4次,取指 →讀A1 →讀A2 →寫A3