计算机组成原理 L02 指令集体系结构(ISA)复习-1

发布时间 2023-05-28 21:28:29作者: 青灰色的风

计算机组成原理 L02 指令集体系结构(ISA)复习-1

复习-1 用作例题/课后题整理 复习-2 用作理论知识点整理

如何使用大常数

由于大数值范围:[-2^31, 2^31-1],而I型指令常数字段只有16bits,所以需要使用两次I型指令。

  1. 取立即数到寄存器高16位指令 lui->load upper immediate
  2. 与立即数进行逻辑或运算 ori -> or immediate
lui  $t0, 1010101010101010
ori  $t0, $t0, 1010101010101010

有符号数取反

按位取反,再加1

符号扩展

复制最高有效位(符号位)
无符号数:用0填充左边的数位
有符号数:用1填充左边的数位

课堂练习-1

image

lb:将字节存入寄存器的最低 8 bits
sb:将寄存器最低 8 bits存入存储器的字节中

$zero 恒为0。MIPS 是大端法,大端法是正常书写的方法,高位在低地址。

  1. add$s3 置0;
  2. lb 存入 0x1 的地址原有的数据 即 0x90 到 $t0 寄存器 第1题答案0x90
  3. sb 存入 $s3 寄存器的值 0x90 到 0x6 第1题答案0x6 0x90
  4. 小端法 0x6 的值将从 0xFF 到 0x12

课堂练习-2

重新改写下面的指令,以支持更远距离的分支转移

beq  $s0, $s1, L1
//These instructions replace the short-address conditional branch:
	bne $s0, $s1, L2
	j L1
L2:

例子:循环

image

编译C语言:leaf过程

image

嵌套

int fact( int n)
{   
	if (n<1)  return  (1);
	else  return (n * fact(n-1));
}

image