计算机组成与设计 硬件/软件接口学习笔记之《指令:计算机的语言》

本文是关于计算机组成与设计的学习笔记,聚焦于MIPS指令系统。介绍了算术运算、数据传输、逻辑运算和决策指令,强调了R型和I型指令的区别,探讨了32位定长指令的结构及其在处理立即数时的限制。
摘要由CSDN通过智能技术生成

计算机组成与设计 硬件/软件接口学习笔记之《指令:计算机的语言》

硬件的操作和操作数

站在使用者的角度,使用者如何指示CPU做事情?如如何让CPU计算两个数的和,如何计算两个数的差?CPU必须向使用者提供一种“交互语言”,完成使用者交给CPU的任务。这种交互语言由操作和操作数组成。
比如:

add $s0, $s1, $s2 #s0=s1+s2

其中add就是“操作”,s0,s1,s2就是操作数。

算术运算指令

在MIPS体系结构中,一共有32个32位通用寄存器。算术运算的操作数只能是寄存器,不能是内存中的数据。另外,由于立即数比较常用,因此算术运算指令也支持立即数操作。如:

addi $s0, $1, 2 #s0=s1+2

MIPS设计原则一:简单源于规整。
MIPS设计原则二:越小越快。

数据传输指令

由于运算指令操作数只能是寄存器,因此必须有指令能够支持在寄存器和内存之间进行数据传输。

lw $s0, 8($s1) #s0=memroy[s1+8]

这里地址必须4字节对齐。为什么?此时先做遗留,后续解释。

逻辑运算指令

由于我们经常会对一个32位数中的某一个字节或某几个bit进行操作,因此MIPS汇编提供了逻辑运算指令来实现这一类操作。左移右移、与、或、非。

and $s0,$s1,$2 #s0=s1&s2
sll $t0,$s0,4 #t0=s0<<4

决策指令

决策指令主要提供条件判断,并跳转到不同的地址去执行,用来实现高级语言中的代码分支逻辑,如判断、循环等。

beq $s0,$1, lable #如果s0==s1则跳转到lable执行。

指令的表示

MIPS的指令均为32位定长指令。

R型指令(Register)

oprsrtrdshamtfunc
6位5位5位5位5位6位

如上所示,这类指令叫做R型指令,之所以这么叫是因为这类指令的操作数全是寄存器:rs,rt,rd。比如:

and $s0,$s1,$s2

32个通用寄存器依次编号为0~31,rs,rt,rd中对应的数字为寄存器编号,5位的范围可表示32个寄存器。op是操作码,如add 对应0等。shamt在逻辑指令中用来表示左移右移的位数。func用来作为op的辅助判断,如add和sub的操作码都是0,需要使用fuc来区分。

I型指令(Immediate)

oprsrtconstant or address
6位5位5位16位

这种指令能够支持立即数。如:addi , lw等。

从上述指令格式可以看出,指令立即数只能最大支持16位,那么如果要使用32位立即数,该怎么办?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值