Temporal Memory Problems
Use After Free
Double Free
Memory Leak
Dangling Pointer
RAII
Resource Acquisition Is Initialisation
Constructor Acquires, Destructor Release
资源获取放在构造函数中,资源删除放在析构函数中
lo...
1.多周期数据通路的设计
分阶段
取指令阶段
执行一次存储器读操作
读出的内容保存到寄存器IR(指令寄存器)中
IR的内容不是每个始终都更新,所以IR必须加一个“写使能”控制
在取指令阶段结束时,ALU输出为PC+4,并送到PC的输入端,但不能在每个时钟到来时就更新PC,所以PC也要有“写使能”控制
译码/读寄存器堆阶段
经过控制逻辑延迟后,控制信号更新为新值
执行一次寄存器读...
设计处理器步骤ISA确定后,进行处理器设计的大致步骤
分析每条指令的功能,并用RTL(Register Transfer Language)来表示
根据指令的功能给出所需元件,并考虑如何将他们互连
确定每个与元件所需控制信号的取值
汇总所有指令所涉及到的控制信号,生成一张反映指令与控制信号之间关系的表
根据表得到每个控制信号的逻辑表达式,据此设计控制器电路
1.指令功能的描述
数据指定
...
1.CPU的基本功能2.CPU的基本组成
数据通路—指令的执行部件
操作元件(ALU)
存储元件—寄存器
控制器—指令的控制部件
译码部件
控制信号生成部件
存储元件—寄存器
数据通路
两类元件组成
组合逻辑元件
时序逻辑元件
元件间的连接方式
总线连接方式
分散连接方式
具体工作
进行数据存储、处理、传送
操作元件:组合逻辑电路
加法器
多路选择器
算逻部件(ALU...
1.RISC-V指令系统概述
核心:RV32I
扩展标准集:RV32M、RV32F、RV32D、RV32A
32位架构RV32G = RV32IMAFD
压缩指令集RV32C(指令长度16位)
32位架构RV64G = RV64MAFD
压缩指令集RV64C(指令长度16位)
2.RISC-V指令参考卡
R-型为寄存器操作数指令
I-型为短立即数或装入(Loa...
#include <thread>
thread为一个类
join:主线程会阻塞住,直到该子线程退出为止
detach:主线程丧失对子线程的控制权
主线程结束之后,子线程可能仍在运行
主线程结束伴随着资源销毁,需要保证子线程没有引用这些资源
yield:让出处理器,重新调度各执行线程
get_id:返回当前线程的id,可以以此来标识不同的线程
sleep_for:让...
1.操作数和寻址方式数据类型
地址(指针):无符号整数,寄存器编号
数值数据
定点数:一般二进制补码
浮点数:IEEE754标准
十进制数:NBCD码
位、位串、字符、字符串用来表示文本、声音、图像
逻辑(布尔)数据
操作数存放在寄存器或内存单元中,也可以立即数的方式直接出现在指令中
寻址方式
寻址方式:指令或操作数地址的指定方式
地址码编码由操作数的寻址方式决定
指令的寻址——简...
一条指令包含:
操作码:指定操作类型(对何种类型数据做何种操作)(操作码长度:固定/可变)
源操作数参照:一个或多个源操作数存在的地址(操作数来源:主(虚)存 / 寄存器 / I/O端口 / 指令本身)
结果值参照:产生的结果存放何处(目的操作数)(结果地址:主(虚)存 / 寄存器 / I/O端口)
下一条指令...
定点数加减运算1.补码加减运算[x+y]补=2n+x+y=2n+x+2n+y=[x]补+[y]补 (mod2n)
[x+y]_补 = 2^n + x+y = 2^n +x+2^n+y = [x]_补+[y]_补\ \ (mod
2^n)
[x+y]补=2n+x+y=2n+x+2n+y=[x]补+[y]补 (mod2n)
[x−y]补=2n+x−y=2n+x+2n−y=[x]补+[...
类属函数
采用通用指针类型的参数
函数模板
通用指针参数实现1234567891011121314151617typedef unsigned char byte;void sort(void *base, //需排序的数据(数组)内存首地址 unsigned int num, //数据元素的个数 unsigned int element_size, //一个数据元素所占内...