#26 构建超标量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=3wzVwdfz-hs 开源地址:https://github.com/fabianschuiki/superscalar-cpu.git 视频总结 本视频演示了汇编器开发流程的最后一步:将编码后的指令生成为最终的二进制文件,并介绍了相关的辅助功能和优化。 核心内容与流程: 1.生成二进制字节流:编写了一个函数,将每条指令的16位编码(分为低字节和高字节)按顺序拼接成一个连续的字节缓冲区。关键点在于正确处理指令的地址布局,在指令之间可能存在间隙(如跳转目标地址较远时)自动填充零字节,确保指令在最终二进制文件中位于正确的位置。 2.创建可读的十六进制转储:为了便于开发者分析生成的二进制内容,实现了一个十六进制转储函数。该功能: •按行显示二进制数据(默认每行8字节)。 •显示每行数据的起始地址。 •在行末显示数据的ASCII字符表示(不可打印字符显示为点号)。 •智能压缩显示:自动检测并折叠连续的零字节块,用一行提示(如“此处出现大量零值”)替代,使输出更简洁,便于聚焦于有效代码。 3.支持指定输出文件大小:为了兼容硬件编程器(如MiniPro,要求烧录文件大小必须与目标存储器完全一致),增加了命令行选项(如 -S或 --size)。汇编器会根据指定的大小在二进制数据后填充零字节,或在校验到数据超出大小时报错。 4.增加输出控制选项:引入了命令行选项来灵活控制输出内容: •默认情况下,汇编器只生成文件,不显示内容。 •使用 -V选项可以打印详细的汇编列表(包含地址和指令编码)。 •使用 -X选项可以打印最终的十六进制转储。 5.验证与成果:通过将汇编器生成的二进制文件与之前手动创建的ROM文件进行对比,验证了生成的字节完全正确。这标志着汇编器开发成功,能够将高级的汇编语言指令自动转换为CPU可执行的精确二进制机器码。 最终成果:视频结束时,一个功能完整的汇编器已经建成。它能够解析汇编代码、计算地址、编码指令,并生成可直接烧录到程序存储器中的二进制文件。这为后续为CPU添加更复杂的指令(如ALU运算)并快速测试提供了强大的工具。