无需登录 数据私有 本地保存

Brainfuck在线解释器 - 步进调试

9
0
0
0

Brainfuck 在线解释器

步进调试 · 内存可视化 · 断点支持
预设:
指针: 0 当前值: 0 步数: 0 状态: 就绪
内存视图 (指针附近)
加载代码后开始调试以查看内存
显示范围: 0-30
输入数据 (供 , 指令读取)
输出
输出将显示在这里
中速
提示:在代码高亮区点击指令字符可设置/取消断点(红色标记),运行模式下遇到断点自动暂停。 快捷键:F8 步进 · F5 运行 · Esc 暂停

常见问题与知识点

什么是 Brainfuck 语言?
Brainfuck 是一种极简主义的图灵完备编程语言,由 Urban Müller 于1993年创建。它仅包含8个指令字符> < + - . , [ ]),其余字符均被视为注释。尽管语法极简,Brainfuck 理论上可以完成任何计算任务,因此常被用于教学和智力挑战。它的名称暗示了其代码难以阅读和理解的特点。
Brainfuck 的 8 个指令分别代表什么?
指令含义说明
>指针右移将数据指针向右移动一个单元格
<指针左移将数据指针向左移动一个单元格
+值加1当前单元格的值增加1(溢出时归零,范围0-255)
-值减1当前单元格的值减少1(下溢时变为255)
.输出字符将当前单元格的值作为ASCII字符输出
,读取输入从输入流读取一个字符,将其ASCII值存入当前单元格
[循环开始若当前单元格值为0,跳转到匹配的 ] 之后
]循环结束若当前单元格值不为0,跳转到匹配的 [ 之后
这个解释器的内存模型是怎样的?
本解释器使用30000个单元格的内存数组(标准Brainfuck规范),每个单元格初始值为0,取值范围为0-255(一个字节)。+指令在255时溢出为0,-指令在0时下溢为255。数据指针初始位于索引0处,超出内存范围(<0 或 ≥30000)将触发错误。内存视图实时显示指针附近的单元格状态。
如何使用步进调试功能?
  1. 编写代码:在代码编辑器中输入Brainfuck代码,或点击预设按钮加载示例。
  2. 加载代码:点击"加载代码"按钮或直接点击"步进",系统会自动解析代码并构建括号匹配表。
  3. 步进执行:点击"步进"按钮(或按F8),每次执行一条指令。代码高亮区会高亮当前指令,内存视图同步更新。
  4. 设置断点:在代码高亮区点击指令字符可设置断点(红色标记)。运行模式下遇到断点自动暂停。
  5. 观察状态:右侧面板实时显示指针位置、当前单元格值、执行步数和输出内容。
如何处理 , 输入指令?
在"输入数据"框中预先填写字符序列。当程序执行到,指令时,会从输入队列中按顺序读取字符(取第一个字符的ASCII值)。如果输入队列为空,则默认使用0。输入队列在每次加载代码时从输入框重新读取。建议在需要输入的程序中提前填好输入数据。
括号匹配出错怎么办?
Brainfuck中的[]必须成对出现且正确嵌套。本解释器在加载代码时会自动检测括号匹配:如果存在不匹配的括号(如多余的[]),会弹出错误提示并拒绝执行。请检查代码中每个[是否有对应的],并确保嵌套顺序正确。代码高亮区也会帮助你可视化括号的位置。
Brainfuck 是图灵完备的吗?如何证明?
是的,Brainfuck 是图灵完备的。证明方法是可以用它来模拟任何图灵机的操作:内存数组模拟无限纸带,+/-修改符号,>/<移动读写头,[/]实现条件分支和循环。.,处理输入输出。从理论上讲,Brainfuck的计算能力等同于任何通用编程语言,只是编程效率极低。实际上已有开发者用Brainfuck实现了各种复杂算法甚至操作系统。
有哪些经典的 Brainfuck 程序示例?
Hello World是最经典的示例,通过嵌套循环生成各字母的ASCII值。此外还有:回显程序(简单复制输入到输出)、加法器(将两个数字相加)、乘法器(通过嵌套循环实现乘法)、斐波那契数列99瓶啤酒歌词生成器等。本工具提供了多个预设示例,点击预设按钮即可加载体验。