问题标签 [brainfuck]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
optimization - 如果我在 Haskell / GHC 中使用未装箱类型(如 Int#),我应该注意哪些事项?
我正在尝试编写一个解析和执行 Brainfuck 代码的小脚本,以了解 GHC 优化选项,我正在尝试优化代码以便更快一点并了解那里发生了什么。
其中一部分是 BF 代码的内部表示,我为此使用了一种特殊的数据类型。这是源代码,包括进行转换的两个函数:
这个想法是,代码将从一些输入(字符串)中读取,由上述代码进行预解析和简化,然后由其他一些函数执行。(假设输入是有效的)。
为了优化此示例,我尝试通过执行以下操作来拆箱MovePointer
andAdjustValue
构造函数的 Int 参数:
这会将装箱的Int
类型变成未装箱的原始Int#
类型,这是 GHc 的实现细节。在我阅读的过程中,这个选项只在少数情况下有用,所以我想问一下,如果我想进行这种优化,我需要注意哪些事项。我的目标是允许使用 Haskell 的好处执行 BF 代码 - 懒惰(我想归档,代码可能只根据需要保存在内存中)和简单性。
editor - 是否有任何功能齐全的 Brainfuck 编辑器可用?
有没有人尝试为 Brainfuck 实现相当于全功能编辑器的功能?什么是最接近的?
resources - Brainfuck中简单程序的来源?
有没有一个资源可以让我获得多个简单的程序,如加法、阶乘、斐波那契和其他用于 Brainfuck 编程语言的程序?
我知道之前在这里发布过一个问题:https ://stackoverflow.com/questions/3554670/tutorials-for-brainfuck
但我想要一份简单程序的列表,简短的程序让你熟悉这门语言。欢迎任何帮助。谢谢。
c - 编译器 C 到 Brainfuck(用于骚扰教授)?
我的一位教授说他会接受我们愿意使用的任何语言的家庭作业。我的条件足够好,我想和他打交道,并使用brainfuck、空格或一些同样“有用”的语言提交一份有效的家庭作业。
我有一些简单的数值分析例程的 C 源代码,以及它们生成的编译输出和汇编文件。
有谁知道反编译器(或 C->brainfuck 翻译器)可以给我类似于“brainfuck 源代码”的东西?
brainfuck - Brainfuck中两个一位数相乘的代码
有人可以在编程语言brainf * ck中发布一个用于将两个一位数相乘的代码吗?
c++ - Making a JIT compiler
I've written a Brainfuck implementation (C++) that works like this:
- Read input brainfuck file
- Do trivial optimizations
- Convert brainfuck to machine code for the VM
- Execute this machine code in the VM
This is pretty fast, but the bottleneck is now at the VM. It's written in C++ and reads a token, executes an action (which aren't many at all, if you know Brainfuck) and so on.
What I want to do is strip out the VM and generate native machine code on the fly (so basicly, a JIT compiler). This can easily be a 20x speedup.
This would mean step 3 gets replaced by a JIT compiler and step 4 with the executing of the generated machine code.
I don't know really where to start, so I have a few questions:
- How does this work, how does the generated machine code get executed?
- Are there any C++ libraries for generating native machine code?
brainfuck - Brainfuck 比较 2 个数字是否大于或小于
如何将两个数字与不等式进行比较?(大于或小于)
我想比较个位数例如
等等
brainfuck - 计算两位数的平均值
如何用brainfuck计算2位数的平均值?
我的意思是我有两位数,例如
2 3
,它的平均值是2.5
因为
2 8
我们有
5.0
如何才能做到这一点?
brainfuck - 如何在 BrainFuck 中任意移动指针?
例如,如果数组是这样的0 0 0 0 ... 0 0[n]s o m e d a t a 4 9 9 9 9 9 9 8 3 7 ...
,如何将指针移动n,而s o m e d a t a 4 9 9 9 ...
指针移动后不改变?
c - 脑残解释器的优化
作为一个帮助我了解解释器和优化的练习,我对此一无所知,我用 C 编写了一个笨拙的解释器。到目前为止,它似乎工作得完美无缺,尽管与其他快速相比,它在执行速度上的竞争并不好口译员。
我可以通过哪些方式更改此解释器以提高性能(或以其他方式)?
我的解释器的一个有趣的方面(尽管大多数其他人可能也这样做)是我运行一个循环来读取源输入并将每条指令转换为
该loop
值是匹配]
指令的索引,如果指令是 a [
,匹配指令的索引[
,如果指令是 a ]
,允许快速跳转。我想这个“解析”过程(不需要很长时间)比每次需要时都进行冗余重新解析以找到匹配的方括号来提高执行时间。
一个有趣的对brainfuck解释器速度的测试是这个程序:
- 解释器的第一个版本
- 实现Jerry Coffin 的答案后的解释器,它通过使
instruction
结构instruction
成为指向操作函数的直接指针来删除运行时循环中的巨大开关 -这比以前的版本运行得慢(函数调用开销?) - 反转先前更改并添加优化以“折叠”多个连续的非循环操作后的解释器,减少循环周期 -这比原来的运行速度略快