计算机组成与设计02——指令:计算机的语言

目录

系列文章目录

一、The MIPS 指令集

1.算数运算

2.寄存器操作

3.内存操作数

4.寄存器 vs 内存 

5.立即操作数与常量

6.指令表示

6.1 R-指令(算术指令)

6.2 I-指令(数据传输、立即数指令)

6.3 逻辑操作

6.4 决策指令(选择结构)

6.5 过程调用指令

6.6 过程调用程序样例

6.7 字节/半字 读取/存储

6.8 立即数寻址

6.9 分支和跳转中的寻址 

6.10 寻址方式总结

7.寄存器大全

8.MIPS中的同步(对多用户)

9.谬误和陷阱

总结


系列文章目录

本系列博客重点在深圳大学计算机系统(3)课程的核心内容梳理,参考书目《计算机组成与设计》(有问题欢迎在评论区讨论指出,或直接私信联系我)。

计算机组成与设计01——计算机概要与技术_@李忆如的博客-CSDN博客

计算机组成与设计02——指令:计算机的语言


梗概

本篇博客主要介绍书目第二章指令:计算机的语言的相关知识。


一、The MIPS 指令集

1.算数运算

加减运算,三个操作数

两个源操作数和一个目的操作数

add a, b, c  # a gets b + c

所有算术运算遵循这一格式

设计原则1:简单源于规整(Simplicity favours regularity)

2.寄存器操作

算术运算指令使用寄存器操作数

汇编器名称为:
t0, $t1, …, $t9 :   编译变量(过程变量)
s0, $s1, …, $s7 : 程序变量 (程序中定义的i,j等)
zero, $sp, $fp…
设计原则 2: 越小越快 (Smaller is faster)

3.内存操作数

主存用于复合数据
l 数组,结构体,动态数据
应用于算术运算
l 从内存往寄存器装载数据
l 从寄存器往内存存储数据

字(word)在内存中是对齐的:地址必须是4的倍数

MIPS 使用 大端方式 字的最小地址表示其最高有效位)。

样例如下:

4.寄存器 vs 内存 

寄存器存取数据比内存快

操作内存数据需要加载(读)和存入(写)两个操作 需要执行更多指令

编译器需要尽可能多地使用寄存器变量 仅将不频繁使用的变量存入内存 寄存器优化非常重要 

5.立即操作数与常量

常量加法:addi $s3, $s3, n(可正负)

n 设计原则 3 : 加速大概率事件
l 小常量很常见
l 立即操作数可 少用一次装载指令(lw、sw)

MIPS 寄存器 0 ($zero) 表示常量0(对大概率操作非常有用)

如寄存器间传值:add $t2, $s1, $zero(非addi,因为都在操作寄存器)

6.指令表示

均为32位编码指令

少量格式为操作代码(opcode)、寄存器号等编码

规整化

寄存器编号(考卷给出)
$t0 – $t7 映射到 reg’s 8 – 15
$t8 – $t9 映射到 reg’s 24 – 25
$s0 – $s7 映射到 reg’s 16 – 23

6.1 R-指令(算术指令)

样例如下:

Tips:add func = 32 , sub func = 34 

Tips:R-指令寻址空间较小。

6.2 I-指令(数据传输、立即数指令)

Tips:lw func = 35 , sw func = 43 ,beq func = 4 ,addi = 8

Tips:通过op code区分R(0)还是I型(非0)。

6.3 逻辑操作

逻辑左/右移是R型指令(rs = 0)。 

6.4 决策指令(选择结构)

样例如下:

Tips:基本块:一个基本块就是一个指令序列,其内部没有跳出的指令(结束指令除外) 没有被跳转到的指令(开始指令除外) 

其他条件操作如下:

Tips:硬件执行<, ≥, … 比 =, ≠慢

有符号数比较: slt, slti 无符号数比较: sltu, sltui 

6.5 过程调用指令

6.6 过程调用程序样例

Ⅰ、叶子过程(非嵌套)样例如下:

Tips:叶子过程中用s类寄存器要保存和恢复,用t类寄存器不需要

Ⅱ、非叶子过程样例如下:

过程调用其它过程

对于嵌套调用,调用者需要存储到堆栈的信息: 它的返回地址

调用后还需要用的任何参数寄存器临时寄存器调用后返回,寄存器会从堆栈中恢复

指针的错误引用如下:

Tips:保存c,d防止func(a,b)中对其值更改

6.7 字节/半字 读取/存储

lb(符号扩展)/lbu(0扩展)类似lw,sb类似sw,char数组差值为1而不是4 

字符串拷贝举例如下:

6.8 立即数寻址

Mips的立即数默认为16位。 

Tips:即将立即数乘2的十六次方 

6.9 分支和跳转中的寻址 

分支(近)跳转(远)样例如下:

6.10 寻址方式总结

7.寄存器大全

8.MIPS中的同步(对多用户)

9.谬误和陷阱

总结

以上便是全书核心内容归纳及第二章——计算机的语言的核心知识。在第二章中,主要以计算机系统结构中的设计原则、寄存器、MIPS指令集的介绍为主。

猜你喜欢

转载自blog.csdn.net/weixin_51426083/article/details/126828692