#25 构建超标量CPU之编写汇编器:指令编码
合集 · 从零构建超标量 CPU (34)
-
#1 构建超标量CPU之系列开篇与核心概念
8:14
-
#2 构建超标量CPU之单步时钟
11:40
-
#3 构建超标量CPU之可调时钟
5:26
-
#4 构建超标量CPU之时钟选择器
10:41
-
#5 构建超标量CPU之复位同步器
9:46
-
#6 构建超标量CPU之程序计数器
14:58
-
#7 构建超标量CPU之实现逐条执行指令
23:08
-
#8 构建超标量CPU之实现指令相对跳转
14:05
-
#9 构建超标量CPU之实现选择下一步要执行的指令
14:22
-
#10 构建超标量CPU之重置程序计数器
12:48
-
#11 构建超标量CPU之添加程序存储器
15:23
-
#12 构建超标量CPU之定义初始指令集
23:14
-
#13 构建超标量CPU之如何从8位内存中获取16位数据
27:15
-
#14 构建超标量CPU之升级至16位指令集
15:23
-
#15 构建超标量CPU之程序计数器PCB
1:01:38
-
#16 构建超标量CPU之寄存器堆工作原理
29:20
-
#17 构建超标量CPU之如何访问寄存器?
50:31
-
#18 构建超标量CPU之打造属于你自己的逻辑分析仪
56:33
-
#19 构建超标量CPU之使用Python进行电路测试
1:00:29
-
#20 构建超标量CPU之寄存器PCB
49:40
-
#21 构建超标量CPU之扩展寄存器堆
41:28
-
#22 构建超标量CPU之我的CPU现在能16位跳转了
18:30
-
#23 构建超标量CPU之编写汇编器:指令解析
48:12
-
#24 构建超标量CPU之编写汇编器:内存布局
19:05
-
#25 构建超标量CPU之编写汇编器:指令编码
19:30
-
#26 构建超标量CPU之编写汇编器:输出二进制文件
17:20
-
#27 构建超标量CPU之计算机如何做加法?
45:35
-
#28 构建超标量CPU之教我的CPU“学会”加法
46:12
-
#29 构建超标量CPU之计算机如何实现负数运算?
47:01
-
#30 构建超标量CPU之进位标志
51:28
-
#31 构建超标量CPU之实现算术逻辑单元的位移功能
32:25
-
#32 构建超标量CPU之添加位移指令
55:35
-
#33 构建超标量CPU之解码ALU微操作
42:29
-
#34 构建超标量CPU之实现布尔代数运算
35:13
Description
原始英文视频:https://www.youtube.com/watch?v=ViJdSGaXLWA 开源地址:https://github.com/fabianschuiki/superscalar-cpu.git 视频总结: 该视频介绍了一个汇编器的核心功能实现过程:指令编码。其主要任务是将汇编语言指令转换为CPU可执行的二进制比特模式(机器码)。这个过程过去需要手动完成,现在通过汇编器实现自动化。 实现过程包括以下几个关键步骤: 设计与实现: 编码字段:在指令数据结构中引入一个可选的“编码”字段,用于存储最终的二进制编码。 打印输出:修改汇编打印器,使其在输出汇编列表时,能同时显示每条指令的地址和其对应的机器码(十六进制形式),便于调试和验证。 编码器类:创建了一个指令编码器类,其核心功能是遍历程序中的每条指令,根据指令的操作码和操作数生成正确的二进制编码。 位操作辅助函数:实现了encodeBits等函数,用于将特定数值精确地写入指令编码的指定位范围。 操作数编码:为不同类型的操作数(如目标寄存器RD、源寄存器RS、8位立即数Immediate8等)实现了专门的编码函数,并在编码过程中进行有效性检查(如寄存器索引是否合法、立即数是否在允许范围内)。 功能验证: 文档通过实例演示了如何为NOP、LDI、MOV、JMP等多种指令类型进行编码,并与手动汇编的结果进行对比,验证了编码的正确性。 测试了错误处理能力,例如当立即数值超出范围时,汇编器能给出清晰的错误信息。 最终目标: 完成编码后,汇编器已经能够生成包含地址和机器码的汇编列表。下一步是将所有指令的编码拼接成连续的字节流,并写入磁盘文件,从而生成可被加载到程序内存中执行的最终二进制程序。
Comments
马上成万粉大v了呀[doge]
↩ 1