簡介
CPU個人筆記,這篇包含了CPU中指令存儲器IR的相關內容。
正文
IR 全名是 Instruction Register,用於存儲指令。
什么是指令?
指令,會告訴cpu:
- 你要做什么操作(MOV ADD ...)?
- DST 和 SRC 都是什么形式的?
指令長什么樣子?
八位指令的形式是:xxxx xxxx
指令有什么形式?
所謂形式,就是尋址方式。
A 寄存器數字 :叫做 寄存器尋址。
5 純數字:叫做 立即數尋址(其實就是給數字,嚴格不能叫做尋址)。
[5] 純數字在框框中:叫做 直接尋址。看到框框,意味着數據在存儲器中,而里面的數字,就是說是在存儲器的具體地方。
[B] 寄存器在框框中:叫做 寄存器間接尋址。偏移的數字沒有直接給出,而是存儲在了寄存器中。
指令也分成不同形式:
- 二地址指令 MOV A,5;
形式 xxxx [aa][bb] - 一地址指令 INV A;
形式 xxxx xx[aa] - 零地址指令 HLT;
形式 xxxx xxxx
來個具體例子?
前提設定
AM_INS = 0 # 00 直接數
AM_REG = 1 # 01 寄存器尋址
AM_DIR = 2 # 10 直接尋址
AM_RAM = 3 # 11 寄存器間接尋址
MOV = 1 # 0001 具體操作 op (假設)
有一段代碼是:
MOV A,5;
經過編譯后,可以得到
[0001 0100, A的標識,5]
其中:
ir = 0001 0100, dst = A的標志, 數字 5
通過下面的代碼,可以從ir中提煉出信息:
op = ir & 0xf0 # 提取 0001 -> 是 MOV 操作
amd = (ir >> 2) & 3 # 提取 01 # 知道DST是寄存器
ams = ir & 3 # 提取 00 # 知道SRC是數字