关于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语言解释器,内置很多小demo
Brainfuck-RF解释器,这个语言很少见啊。。
systemf:一个brainfuck解释器支持Linux系统调用
Brainfuck 解释器和编码器 Brainfuck 是一种,有 8 条指令。 这个项目有两个部分: 解释器 - 解释无脑代码 编码器 - 生成(合理地)压缩的脑子代码来输出字符串( ) 口译员( Brainfuck.py ) Brainfuck 的...
brainfuck_interpreter:C语言中的Brainfuck解释器
注意事项:这个解释器对于Brainfuck有65536个存储空间,存储空间采用unsigned char存储(即范围为0~255),代码嵌套不能超过1024层,代码长度不能超过16777216。由于这里的输入输出采用getch和putch,因此用户输入...
Brainfuck解释器和Eclipse编辑/调试支持。 用Java编写的Brainfuck解释器。 解释器支持进程调试,即调试器必须在同一Java进程中运行。 Eclipse功能,包括编辑器和调试插件。 Brainfuck口译员 特征: 内部存储器...
将你要编译的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解释器。
脑干Brainfuck解释器的多语言实现。 完全没有限制! 做你想干的事!执行C cpp 节点PHPBrainfuck脚本hello-world-1 hello-world-2 添加乘up贡献拉请求是受欢迎的:)关于Brainfuck 以下内容来自维基百科。 检查以了解...
一个简单的brainfuck语言的解释器.zip一个简单的brainfuck语言的解释器.zip一个简单的brainfuck语言的解释器.zip一个简单的brainfuck语言的解释器.zip一个简单的brainfuck语言的解释器.zip
脑干用Python编写的Brainfuck解释器
脑干 用JavaScript编写的交互式Brainfuck解释器。
dbfi(可调试Brainfuck解释器)是一种快速解释器和Brainfuck编译器(用于x86)。 解释器允许您使用字符!调试程序,该程序会打印单元格的值和当前位置。
脑干 Android Brainfuck解释器(仅限现在的UI)
密宗地 Brainfuck解释器的Java实现 用法 java [-options] -jar Missandei.jar scriptFile [initialTapeLength]
brainfuck:用C编写的Brainfuck解释器