20 岁,是学生

Go 语言系统调用

64位 Linux 上的系统调用

系统调用是操作系统内核提供给用户空间程序的一套标准接口。通过这套接口,用户态程序可以受限地访问硬件设备,从而实现申请系统资源,读写设备,创建新进程等操作。事实上,我们常用的 C 语言标准库中不少都是对操作系统提供的系统调用的封装,比如大家耳熟能详的 printf, gets, fopen 等,就分别是对 read, write, open 这些系统调用的封装。使用 ltrace 来追踪调用就可以清楚地看到这一点,例如:

2019-03-04 Go 语言
Link

使用 C/C++ 模拟 defer 关键字

笔者在翻译完 这篇文章 以及同系列的下一篇文章(尚未发布…)后,受到了 ESR 大神的鼓舞,遂决定在寒假学习一下 Go 语言。在学习 Go 语言的过程中,觉着这语言和之前学到的 C/C++ ,Scheme 相比有着无法比较的简洁感。笔者尤其喜欢 defer 这一关键字的设计。于是就在今天尝试使用 C/C++ 模拟了下 defer 关键字。

                                                  ---- 某咸鱼的碎碎念
2018-04-01 Go
Link

NES 模拟器实现指南(零)

简介

Family Computer (ファミリーコンピュータ),缩写为 Famicom (ファミコン),是日本任天堂公司推出的一种第一代家用游戏主机,在国内常被称为红白机。红白机有两种,一种是日本版,体积较小,机身以红色和白色为主,俗称“红白机”;另一种是欧美版,体积较大,机身以灰色为主,称为 Nintendo Entertainment System,简称NES。两套机器的主要差别是支持的视频制式不一致,以及卡带的形状不同。在上世纪八十年代,红白机曾是世界上使用最广泛的游戏终端。自其从 1983 年发布至 1993 年停止维护,红白机将电子游戏带入各家各户,并推动了电子游戏最初的发展。

尽管自红白机以来,科技已经进步了不少,我们能使用最新的技术制作出足以以假乱真的游戏画面,能够利用相当于当初 FC 卡带几百万倍的存储空间来存储游戏内容。但是,那个时代的 FC 游戏依然以其卓越的可玩性吸引着各个年龄的玩家。超级马里奥兄弟,洛克人,魂斗罗仍然是难以逾越的经典之作。

当然,现代的操作系统以及硬件已经无法直接运行 FC 游戏。不过好在我们可以通过使用软件模拟 NES 主机的硬件来让游戏运行在现在的电脑上。这类软件便被称为模拟器。现有的 NES 模拟器中较为著名的有全平台的 FCEUX,Android 上的 Nesoid,以及 Windows 专供的 VirtuaNES。笔者一直使用的便是 VirtualNES。本文的目的便是实现一个简单的 NES 模拟器。笔者在演示时使用的语言为 Go 语言,当然读者若是想自行实现的话可以使用其擅长的任意语言进行。

2018-02-25 NES
Link