算术运算和逻辑运算——算术逻辑运算单元——计算机组成原理
文章目录
- 1.MIPS指令运行基础结构:
- 2.加法运算示例:
- 3.算术运算指令:
- 1.R型指令:
- 2.I型指令:
- 4.逻辑运算指令:
- 1.对于立即数的处理:
- 2.逻辑‘与’运算的编码:
- 3.在CPU上的运算:
- 5.算术逻辑运算的需求:
1.MIPS指令运行基础结构:
由于MIPS指令的格式跟X86指令的格式相似,我们可以把它看成是在如图所示的结构中运行的:
MPIS指令只对寄存器进行操作我们可以考虑忽略存储器;
2.加法运算示例:
1.加法指令编码(纯手工(ಥ _ ಥ)):
2.加法运算:
控制电路:发出指令;
指令编码:解读指令;
CPU通过读取址,将指令编码存放在IR寄存器中;
1.指令译码读取opcode后知道了是R型指令,再根据funct型的值分析出是add指令;
2.控制电路会向ALU发出信号,指明接下来将进行加法运算;
3.解读出rs、rt对应的寄存器、控制电路会选出对应的源操作数,将其内容传送到ALU的输入;
4.同时指令译码会解读出rd对应的寄存器,并将ALU的输出联通到相应的寄存器中;
5.ALU会根据控制电路给出的信号将两个输入的源操作数进行加法运算,并将运算结果保存在相应的寄存器中;
6.运算完成。
3.算术运算指令:
1.R型指令:
特点:源操作数都是在寄存器中;
2.I型指令:
源操作数时立即数(立即数是16位的)而源操作数是32位的:
那么16位如何转化为32为指令呢?
转换的方法:
addiu在运算中溢出时不会产生异常;
4.逻辑运算指令:
1.对于立即数的处理:
含有立即数时,最高位的填充全是0;因为它不像是算术运算指令有正负号的运算;
d4rkjy05un: 您好,我想请问一下为什么MIPS-R格式的opcode是0?把opcode设为0的话会有什么优点呢?还有为什么不把R格式的opcode和funct合并在一起组成一个12bit的opcode呢?
不会黑的老母猪: 引用「catch{」 这个是finally吧
半浮名:
LovelyBear2019: 默默的读完了您的博客,感受颇多!