computer organization and design notes(2)

(1) 在MIPS中,一个字的地址必须是4的倍数,这叫做严格对齐。(alignment restriction)

(2) MIPS采用big endian.

(3) MIPS寻址时,偏移量先乘4再和首地址相加。

(4)

MIPS 寄存器
nameregister numberusage
$zero0常数0
$v0-$v12-3结果和表达式的值
$a0-$a34-7arguments
$t0-$t78-15临时结果
$s0-$s716-23saved
$t8-$t924-25临时结果
$gp28全局指针
$sp29栈指针
$fp30frame 指针
$ra31返回地址
1号寄存器($at), 为assembler所保留;26-27号寄存器($k0-$k1),为操作系统保留。


(5) 汇编指令的二进制数值形式就叫做机器语言。多条这样的指令就是机器码。MIPS指令长度为32比特,其中含有若干个field,每个field有固定的比特。

MIPS 有三种指令格式,R格式,I格式和J格式。

R格式:基本运算指令的格式

域大小6比特5比特5比特5比特5比特6比特
R格式操作码存放第一个操作数的寄存器存放第二个操作数的寄存器存放结果的寄存器位移量function code

I格式:传输指令,分支指令,和立即数指令的格式

域大小6比特5比特5比特16比特
I格式操作码存放第一个操作数的寄存器存放第二个操作数的寄存器内存地址或者立即数

J格式:跳转指令的格式

域大小6比特26比特
J格式操作码目标地址

(6)  MIPS采用NOR指令来替代NOT指令

A NOR 0 = NOT (A OR 0)= NOT(A)

(7) basic block的概念

一个指令序列,序列中米有分支指令(除了在序列的尾部),也没有branch target或者branch label(除了在分支的首部)。编译过程中就会把一个程序分成若干个basic block.

(8) MIPS编译器使用slt (set on less than), slti, beq (branch if equal), bne (branch if not equal)四条指令和0值来实现所有的条件跳转:等于,不等于,小于,小于或等于,大于,大于或等于。

(9) jump register指令

对于case和switch语句,MIPS使用一个jump address table来实现,该表含有需要跳转到的不同目标指令的地址。它实际上是一个元素为地址的数组。为了支持这种情况,MIPS设有一个jump register指令(jr),该指令无条件地跳转到一个存放在寄存器中的内存地址。

(10) MIPS中的字节指令

MIPS提供了对字节操作的指令。lb指令从内存获取一个字节,将其放在一个寄存器的最右边的8位。sb指令将一个寄存器的最右边8位取出并将其写入内存。相对应的两个字节的操作指令是lh和sh。h代表halfword。

(11) c中的字符和java中的字符

C语言中的字符占8比特,而Java中的字符占16比特。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值