编码尝试:使用Brainfuck实现Brainfuck解释器 - 如何写一个引导程序?

2026-04-29 08:581阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:

这是一篇分帖,主帖请见:
编码尝试:使用Brainfuck实现Brainfuck解释器 - 开发调优 - LINUX DO

终于从无穷无尽的ddl里面解脱出70%了,能有点时间继续写了!
先来给佬u们贴个成果截图:
自举自举自
f22f83f7a96966ab19835b47de6579ea2021×1006 188 KB
总共套了4层:
最外层是 @so1ve 开发的BrainFrost。(BF→x86-64机器码编译器)
第二层是以16777216位长,16栈深构建的解释器。
第三层是以480位长,16栈深构建的解释器。
第四层是一个小小的echo程序。
太爽辣! >w<

好了,说回正文:Boot

主帖中说到,这个Boot需要这些功能:

  • 读取指令直到指令终止符。
  • 重新编码指令以加速后面的运行。
  • 将指令逆序写入.text段。
  •                 这一条是什么,滚木吗?

我们来分析一下实现:

  • 逆序写入是最简单的,只需要确保每一次有效输入之后会多执行一个<,我们就能左移一格。
  • 主循环,稍难一点,它会一直执行直到读取到我们规定的终止符~
  • 一个巨大的类switch结构,这个最难,它负责识别不同的指令,并执行对应的逻辑。
  • 一个重编码指令的逻辑,这玩意超级考验设计。

1. 内存分配

首先,我们需要一大堆的>,用来把指针移动到整个程序段的最右边,这些>的个数就是解释器程序段的大小。

阅读全文
标签:软件开发
问题描述:

这是一篇分帖,主帖请见:
编码尝试:使用Brainfuck实现Brainfuck解释器 - 开发调优 - LINUX DO

终于从无穷无尽的ddl里面解脱出70%了,能有点时间继续写了!
先来给佬u们贴个成果截图:
自举自举自
f22f83f7a96966ab19835b47de6579ea2021×1006 188 KB
总共套了4层:
最外层是 @so1ve 开发的BrainFrost。(BF→x86-64机器码编译器)
第二层是以16777216位长,16栈深构建的解释器。
第三层是以480位长,16栈深构建的解释器。
第四层是一个小小的echo程序。
太爽辣! >w<

好了,说回正文:Boot

主帖中说到,这个Boot需要这些功能:

  • 读取指令直到指令终止符。
  • 重新编码指令以加速后面的运行。
  • 将指令逆序写入.text段。
  •                 这一条是什么,滚木吗?

我们来分析一下实现:

  • 逆序写入是最简单的,只需要确保每一次有效输入之后会多执行一个<,我们就能左移一格。
  • 主循环,稍难一点,它会一直执行直到读取到我们规定的终止符~
  • 一个巨大的类switch结构,这个最难,它负责识别不同的指令,并执行对应的逻辑。
  • 一个重编码指令的逻辑,这玩意超级考验设计。

1. 内存分配

首先,我们需要一大堆的>,用来把指针移动到整个程序段的最右边,这些>的个数就是解释器程序段的大小。

阅读全文
标签:软件开发