总结
指令格式
1.指令
指令字长和机器字长没有必然的联系。
| 操作码 | 地址码 |
|---|
零地址指令: 不需要操作数或者堆栈问题。
一地址指令: 自操作或者ACC。
二地址指令: a = a + b。
三地址指令: c = a + b。
四地址指令: c = a + b , next。
2.定长操作码
最高位部分分配若干定长表示操作码。
3.扩展操作码
每层留一条作为扩展指令。
要求: 短不能和长前面的一致;每个操作码也不能一致;高频短,低频长。
指令寻址方式
1.指令寻址
顺序(PC + 1),跳跃(PC + x,下一节点依旧由PC给出)。
2.数据寻址
1.隐函寻址: 不明显给出,一地址指令的ACC不必显出地址。
2.立即寻址: 访问即内容,而非地址,所以很短。(补码存放)
3.直接寻址: 访问即(主存)真实地址。
4.间接寻址: 访问,访问,再访问。
5.寄存器寻址: 访问(寄存器)即内容。
6.寄存器间接寻址: 访问寄存器内容,得主存地址,再访问主存得内容。
7.相对寻址: EA = (PC) + A,PC课浮动变化。
8.基址寻址: EA = (BR) + A,操作系统控制,浮动程序。(A是活动的)
9.变址寻址: EA = ( IX ) + A,面向用户控制,循环程序。(IX是活动的)
10.堆栈寻址: 硬堆(寄存器),软堆(主存中画出一部分),SP可以自增,所以多为零地址指令。
Complex & Reduced Instruction Set Computer
| 对比 | CIRC(X86编程) | RISC(ARM编程) |
|---|---|---|
| 指令系统 | 复杂,大 | 精简,简单 |
| 指令数目 | >200 | < 100 |
| 指令字长 | 不固定 | 固定 |
| 访存指令 | 不限制 | Load/Store |
| 指令执行时间 | 差距大 | 差距小 |
| 使用频度 | 大 | 小 |
| 寄存器数量 | 少 | 多 |
| 目标代码(相对于) | 困难,低效 | 优化,高效 |
| 控制方式 | 微程序 | 组合逻辑 |
| 流水线 | 一定方式 | 实现,一个时钟周期 |