[CPU] 有关于指令存储器IR

简介

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是数字
原文地址:https://www.cnblogs.com/kykai/p/15449157.html