标签: brainfuck

为什么Brainfuck为汇编编译器创建的程序会崩溃?

我正在为Haskell中的NASM编译器编写Brainfuck .它可以编译小程序,但不能正确地使用大程序.

考虑以下Brainfuck代码:

++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
Run Code Online (Sandbox Code Playgroud)

我把它表示为:

BfSource [Add 8,LoopL 0,GoRight 1,Add 4,LoopL 1,GoRight 1,Add 2,GoRight 1,Add 3,GoRight 1,Add 3,GoRight 1,Add 1,GoLeft 4,Sub 1,LoopR 1,GoRight 1,Add 1,GoRight 1,Add 1,GoRight 1,Sub 1,GoRight 2,Add 1,LoopL 2,GoLeft 1,LoopR 2,GoLeft 1,Sub 1,LoopR 0,GoRight 2,WriteChar,GoRight 1,Sub 3,WriteChar,Add 7,WriteChar,WriteChar,Add 3,WriteChar,GoRight 2,WriteChar,GoLeft 1,Sub 1,WriteChar,GoLeft 1,WriteChar,Add 3,WriteChar,Sub 6,WriteChar,Sub 8,WriteChar,GoRight 2,Add 1,WriteChar,GoRight 1,Add 2,WriteChar]
Run Code Online (Sandbox Code Playgroud)

哪个被翻译成以下程序集:

section .bss
    memory resb 30000
section .text
    global _start
_printChar:
    mov rdx, 1
    mov rbx, 1
    mov rax, 4
    int 80h
    ret
_start:
    mov …
Run Code Online (Sandbox Code Playgroud)

x86 assembly segmentation-fault brainfuck

0
推荐指数
1
解决办法
147
查看次数

如何一次读取和写入3位流?

我正在尝试制作一个超压缩的brainfuck变种,这是一种带有8条指令的深奥编程语言.由于3位是存储8个值的最小存储量,所以我选择了它.我坚持的部分是如何读取不是2的幂的位数.

我尝试使用std::bitset,但这只是序列化为每位1字节的字符串,这与我想要的相反.我该怎么做?

c++ stream esoteric-languages bit brainfuck

-1
推荐指数
1
解决办法
88
查看次数

可以更快地编译和/或计算斐波那契数列的前100个数字:C或Brainfuck

对于使语言“快速”运行的原因,我知之甚少,但是对我来说,为极简主义而设计的语言也将非常快,对吗?

C比BrainFuck更接近英语,并且BrainFuck的编译器大小非常小,为1024字节,与Tiny C编译器(大小约为100 KB)相比几乎没有什么。

但是,所有在线网站都将C视为最快的语言条码字节码或汇编。

(清晰度编辑可将问题搁置)

如果我用C和BrainFuck编写了相同的程序(例如,它们计算了斐波那契数列的前100个数字),那么哪个程序可以在运行时更快地完成任务?哪一个编译速度更快?

c performance brainfuck

-1
推荐指数
1
解决办法
140
查看次数

Brainfuck口译员

有人请为我描述这个brainfuck解释器吗?

    #include <stdlib.h>
    char m[9999], *n[99], *r = m, *p = m + 5000, **s = n, d, c;
    main() 
    {
       for (read(0, r, 4000); c = *r; r++)
              c - ']' || (d > 1 || 
              (r = *p ? *s : (--s, r)), !d || d--), c - '[' || d++ ||
              (*++s = r), d || (*p += c == '+', *p -= c == '-', p += c == '>', 
              p -= c == '<', c …
Run Code Online (Sandbox Code Playgroud)

c interpreter brainfuck

-2
推荐指数
1
解决办法
1336
查看次数

带for循环的ASCII模式

00**00
00**00
**00**
**00**
00**00
00**00
Run Code Online (Sandbox Code Playgroud)

使用for循环打印此模式。

for-loop brainfuck

-20
推荐指数
1
解决办法
157
查看次数