关于BrainFuck的wiki百科解释:
http://zh.wikipedia.org/wiki/Brainfuck
虽然这门语言的名字很不雅,但能实现几乎所有的功能,虽然写出来的程序要看懂就是一件十分难的事情了……不过可以看出外国人是将技术跟恶搞娱乐地结合在一起,啥时候咱们中国人也能搞点这样的东西出来呢?
由于只有8个字符,所以解释器实现起来是十分简单,就算要写编译器的话……无非也就是将8个状态换成是opcode,再构造一个PE文件头将汇编代码写进去而已……
解释器代码如下:
#include<stdio.h>
#include<malloc.h>
#include<string.h>
char br[]="++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.";
int main()
{
char *eip = br;
char *mem = (char*)malloc(100);
char *ptr = mem;
bool isright = true;
while(*eip != 0)
{
if(*eip == '[')
{
while(*eip!=0 && *eip!=']')
++eip;
if(*eip == 0)
isright = false;
}
else if(*eip == ']')
isright = false;
if(!isright)
{
printf("The brainfuck code has some wrong!\n");
return 0;
}
++eip;
}
memset(ptr,0,100);
eip = br;
do
{
switch(*eip)
{
case '>':
++ptr;
break;
case '<':
--ptr;
break;
case '+':
++*ptr;
break;
case '-':
--*ptr;
break;
case '.':
putchar(*ptr);
break;
case ',':
*ptr = getchar();
break;
case '[':
if(*ptr == 0)
{
do
{
++eip;
}while(*eip!=']');
}
break;
case ']':
if(*ptr != 0)
{
do
{
--eip;
}while(*eip!='[');
}
break;
}
if( (ptr-mem)>100)
{
printf("Stack overflow!\n");
break;
}
++eip;
}while(*eip!=0);
free(mem);
return 0;
}
br字符数组中的是Hello world!的代码,编译后运行果然就出现了Hello world!的字符串了~
分享到:
相关推荐
Brainfuck解释器,以一个虚拟机的形式运行Brainfuck代码,完整支持Brainfuck标准语句(>。,[])。
brainfuck, 在C 语言中,Brainfuck解释器编写了 brainfuck 用C 编写的Brainfuck解释器。用法brainfuck [-veh] file...-e --eval run code directly-v --version show versi
Brainfuck-RF解释器,这个语言很少见啊。。
这个压缩包包含的资源是关于BrainFuck语言解释器及其一些示例程序。 BrainFuck的语言结构非常简单,只有8个基本命令,分别用英文字符表示: 1. `>`:指针移动(Pointer Increment):将数据指针向右移动一位。 2. ...
Brainfuck解释器和Eclipse编辑/调试支持。 用Java编写的Brainfuck解释器。 解释器支持进程调试,即调试器必须在同一Java进程中运行。 Eclipse功能,包括编辑器和调试插件。 Brainfuck口译员 特征: 内部存储器...
**Python-systemf:一个Brainfuck解释器支持Linux系统调用** 在编程世界中,Brainfuck是一种极简主义的编程语言,旨在挑战程序员的创新思维,而不是用于实际开发。它的语法非常简单,只有8个基本操作符,但在实现...
Brainfuck 解释器和编码器 Brainfuck 是一种,有 8 条指令。 这个项目有两个部分: 解释器 - 解释无脑代码 编码器 - 生成(合理地)压缩的脑子代码来输出字符串( ) 口译员( Brainfuck.py ) Brainfuck 的...
标题"brainfuck_interpreter:C语言中的Brainfuck解释器"表明这是一个用C语言编写的程序,它的主要功能是解释执行Brainfuck编程语言的代码。Brainfuck是一种极简主义的编程语言,设计初衷是为了挑战编程语言的极限,...
注意事项:这个解释器对于Brainfuck有65536个存储空间,存储空间采用unsigned char存储(即范围为0~255),代码嵌套不能超过1024层,代码长度不能超过16777216。由于这里的输入输出采用getch和putch,因此用户输入...
将你要编译的BRAINFUCK程序保存为Compilation.brainfuck在同目录下,运行本程序,即可
用Python编写的Brainfuck解释器。 要求 类似于UNIX的操作系统 吉特 Python 本地安装 HTTPS $ git clone https://github.com/aminnairi/python-brainfuck $ cd python-brainfuck SSH协议 $ git clone git@github....
在Java中编写Brainfuck解释器涉及到以下几个关键步骤: 1. **字符读取与解析**:首先,程序需要读取Brainfuck源代码,并将这些源代码转换成可执行的指令序列。这通常通过遍历源代码字符串,对每个字符进行处理来...
标题“brainfuck:Android Brainfuck解释器”揭示了我们要讨论的是一个在Android平台上运行的特定编程语言解释器,这个解释器是为Brainfuck语言设计的。Brainfuck是一种极简主义的、低级的编程语言,由Urban Müller...
脑干Brainfuck解释器的多语言实现。 完全没有限制! 做你想干的事!执行C cpp 节点PHPBrainfuck脚本hello-world-1 hello-world-2 添加乘up贡献拉请求是受欢迎的:)关于Brainfuck 以下内容来自维基百科。 检查以了解...
这个名为"bfc.zip"的压缩包包含了一个开源项目,旨在为Brainfuck语言提供一个基于LLVM的编译器和即时(JIT)解释器。下面我们将深入探讨Brainfuck、LLVM以及编译器和解释器的工作原理。 1. **Brainfuck语言** - ...
"brainfuck:用JavaScript编写的交互式Brainfuck解释器" 这个标题告诉我们,我们正在讨论一个项目,它是一个基于JavaScript实现的Brainfuck编程语言的解释器。Brainfuck是一种极简主义的、低级的编程语言,主要用于...
一个简单的brainfuck语言的解释器.zip一个简单的brainfuck语言的解释器.zip一个简单的brainfuck语言的解释器.zip一个简单的brainfuck语言的解释器.zip一个简单的brainfuck语言的解释器.zip
《Missandei:Java实现的Brainfuck解释器详解》 在编程世界中,存在一种名为Brainfuck的语言,它以其简洁的语法和极高的抽象性著称。这种语言的设计旨在挑战程序员的理解极限,同时也为理解计算机底层工作原理提供...
"BFR: Brainfuck 解释器使用 ANTLR3 解析器生成器" 这个标题提到了两个关键概念:Brainfuck 和 ANTLR3。Brainfuck 是一种极简主义的编程语言,设计用于教育和娱乐,其语法极其简单,只有八个基本命令。ANTLR3 是一个...
"brainfuck:用C编写的Brainfuck解释器" 这个标题表明我们关注的是一个使用C语言实现的Brainfuck解释器。Brainfuck是一种极小化的、非常简单的编程语言,通常用于教学和理解计算机如何执行基本指令。而C语言是一种...