驱动之家 07-28
96MB文本模拟CPU!开发者用正则表达式跑通Doom:一帧需要180秒
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_keji1.html

 

快科技 7 月 28 日消息,近日开发者 Artem Lytkin 用正则表达式成功运行了 1992 年的 Doom 游戏,就是速度很慢,每帧需要约 180 秒,每秒执行约 8 万次文本替换,每帧需要近 1400 万次替换。

在各种奇怪设备上跑 Doom 早已是编程界的经典挑战,从烤面包机到充电器甚至验孕棒都跑过,但用正则表达式来跑,属于软件层面的极限挑战。

正则表达式是程序中用于查找和替换文本的工具语言,包含条件判断、字符跳转和替换规则,技术上满足编程语言的所有要求。

Lytkin 利用这些能力,创建了一个 96MB 的纯文本字符串,其中包含虚拟 CPU 的寄存器、内存、视频输出帧缓冲、游戏 WAD 数据以及 I/O 等所有组件。

启动后,正则表达式开始对字符串进行文本匹配和字符替换,模拟处理器寄存器中的数值变化,再访问和写入 " 内存 ",如此循环。

速度可想而知地慢,Lytkin 表示生成一帧画面大约需要 180 秒,每帧需要近 1400 万次替换,但它确实能跑,而且 Lytkin 声称输出与真正的 Doom 一致。

玩家甚至可以用键盘控制游戏,只不过按一次键要等三分钟才看到画面变化,Lytkin 开玩笑称跟射击游戏完全不沾边。

内存访问的实现方式也值得一提,Lytkin 用正则表达式的字符跳转指令构建了一棵二叉树,从分支跳到分支,避免每次都从头扫描 96MB 文本查找标记。

目前 doom-regex 项目已开源,官网提供可视化演示,可以看到正则机器以文本和图形两种方式运行,画面相当催眠。

宙世代

宙世代

ZAKER旗下Web3.0元宇宙平台

一起剪

一起剪

ZAKER旗下免费视频剪辑工具

相关标签

编程 极限挑战 开源 三分钟
相关文章
评论
没有更多评论了
取消

登录后才可以发布评论哦

打开小程序可以发布评论哦

12 我来说两句…
打开 ZAKER 参与讨论