Introducing to computer systems
(計算機系統概論)
第五章 LC-3結構
第一部分
What do we need to do to run the LC-3?
5.1 ISA(第八第九章會講到了)(其實這塊跳過就好了)
ISA向以機器語言編程的程式員提供有關控制機器所需要的所有必要資訊,另外,面向專業的系統編程ISA還將定義更詳細的機器相關資訊,如高級資訊(如C、Pascal、Fortran、COBOL)編譯器的開發者需要知道一些“竅門”,才能將高級語言翻譯成高效的機器語言,
ISA給出了記憶體組織方式、暫存器組、指令集(包括操作碼、資料結構、尋址模式)等資訊,
5.1.1 記憶體組織
LC-3是一個字尋址機器(word-addressable),LC-3中Data的處理基本單位是16位,所以16位即為一個“字”
其實這16bit(65535),空間并不是完全用于記憶體,
5.1.2 暫存器
由于從記憶體中獲取資料的速度很慢(不止一個周期),所以LC-3和大多數機器一樣,還提供了臨時儲存空間,它的訪問速度是一個周期,(就想成他只能運算一遍就行了),
說白了其實就是一個進行操作的臨時儲存空間,每組暫存器中的每個暫存器被稱為通用暫存器(General Purpose Register,GPR)
寄存和記憶體特性一樣的:
(1)記憶性,寄存中的data可以被再次取用出來(STR和LDR指令后面會講到),記憶體和寄存中的存盤大小都是一個“字”,就是16位
(2)獨立尋址:每個暫存器有不同的標識:LC-3中的暫存器僅有八個GPR//那么也就是說只要用三位的二進制數就可以表示出來暫存器的位置,用我們的符號表示就是R0,R1,R2…,R7,

這就是一個暫存器嘍
接下來來舉個栗子:
這個其實是寫在memory里面的,我們可以簡單寫成這樣子:
ADD R2,R0,R1
它的意思就是將R0和R1中的Data相加并存到R2中去,
原本R0中的資料為:
0000 0000 0000 0001
R1中的資料為:
0000 0000 0000 0011
R2中的資料為:
0000 0000 0000 0101
在進行了這一條ADD的指令過后,
R0中的資料為:
0000 0000 0000 0001
R1中的資料為:
0000 0000 0000 0011
R2中的資料為:
0000 0000 0000 0100
也就是說你不用考慮R2中原本的資料為多少,你只是要用運算過后的結果替代進去就好了,這只是做了一個簡單的1+2=3.
5.1.3 指令集
一條指令,就如同上文提到的ADD指令,分為兩個部分:
操作碼(做什么)和運算元(對誰操作)

ADD(0001)就是操作碼,運算元就是其他部分,
5.1.4 操作碼
LC-3的ISA總共有十五條指令:
可以分為:運算(operate),資料搬遷(data movement)和控制(control)三種
運算類指令:可以通過加法來實作資料之間的運算//LC-3僅能實作加法的運算,所以我們減法就是加負數,乘法就是連加,除法就是減去一半,(更多的后面會講到)
資料搬遷類指令:負責在memory和register之間搬遷資料,
控制類指令:負責跳轉地址,
以下是LC-3所有的指令:

attention:+表示該指令將改變條件碼
5.1.5 資料型別
ISA的操作碼能夠識別/處理某種資料型別所表示的資訊,我們稱ISA支持這種資料型別,在《計算機系統概論》的第二章中講到了LC-3所支持的唯一資料型別:補碼整數,
5.1.6 尋址模式
說白了,這就是尋找地址的一種操作,資料可能存在的地方:
暫存器中,記憶體中,指令中,
故LC-3支持五種尋址模式:
立即數,暫存器以及三種記憶體尋址模式:相對尋址(PC-relative),間接尋址(indirect),基址偏移(Base+offset),
在5.2以及5.3節中將會講到的,
5.1.7 條件碼
例如BR指令中的nzp,負數為n,零為z,正數為p,
在5.4節中將會繼續講到,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/280354.html
標籤:其他
