摘要:
引言 CPU 要执行指令需要先识别指令,弄清楚要执行的指令是什么类型、需要几个周期、操作数在哪里、目的地在哪里等信息,才能在后续的指令执行过程中打开对应的数据通路。“识别指令”的过程叫译码,完成指令识别功能的机构,叫译码器。 两个译码器 因为 6502 CPU 有一个两级流水线,所以有两个译码器,分 阅读全文
摘要:
开篇 你是否曾对 CPU 的工作原理充满好奇,以及简单的晶体管又是如何组成逻辑门,进而构建出复杂的逻辑电路实现?本文将以知名的 6502 CPU 的电路图为例,介绍如何阅读 CPU 电路图,并向你演示如何从晶体管电路还原出逻辑门电路。通过这篇文章的引导,你将能够揭开 CPU 复杂设计的面纱,一窥其内 阅读全文
摘要:
Filtergraph 在 ffmpeg 命令中,可以使用 -filter、-vf、-af 或 -filter_complex 选项指定 filter graph Filtergraph 由 filter chain 组成,语法如下: filterchain_1;filterchain_2;... 阅读全文
摘要:
本文探讨了模拟器中的音画同步问题,分析了各个原因,并提供了相应的解决方案。对模拟器开发,或者游戏循环开发有兴趣的朋友可以一读。 阅读全文
摘要:
本文以图文相结合的方式介绍了 NES(FC、红白机、小霸王)的系统架构,可以让读者对 NES 的工作原理有高层次的认知,如果想要开发 NES 模拟器,这也是很好的入门资料。 阅读全文
摘要:
发布软件时通常都会写 Release Note,但每次从头手打也有点累,可以考虑从 Git 的提交历史中自动生成。本文将分享一些脚本,帮助处理 Git 提交历史并自动生成 Release Note 追加到 changelog.md 中。 阅读全文
摘要:
本文使用简单易懂的代码,实现了一组可以构造解析器的函数。相信通过本文的演示,你应该对解析器的基本工作原理有了一个浅浅的了解。 阅读全文
摘要:
本文介绍了 NES(FC、红白机、小霸王)中一些名词或者术语,主要与 PPU 有关。 Tile 8x8 像素图像。每像素 2 比特, 共 16 字节大小。每个像素可以使用 4 种颜色。 Sprite 表示屏幕上可以移动的图片。有两种大小:8x8(WxH)和 8x16(WxH)。 Pattern Ta 阅读全文
摘要:
6502 共有 13 种寻址模式: A:寄存器寻址。指令形式为 OPC A;目标数据位于 A 寄存器中,属于隐含寻址;使用这种寻址模式的指令都是 1 个字节长度,需要 2 个时钟周期 abs:绝对地址寻址。指令形式为 OPC $LLHH;目标数据位于绝对地址 $HHLL 处 abs,X:X 变址绝对 阅读全文
摘要:
# 前言 本文将向大家介绍如何使用 C++ 的标准库实现一个异步和并发编程中都非常重要的编程模式:消息循环(Event Loop)。尽管市面上存在不少库也提供了同样的功能,但有时候出于一些原因,我们并不想引入外部库,就想要一个小巧、只使用 C++ 标准库的实现。 # 话不多说,上代码 ```cpp 阅读全文