[翻译]Brainfuck

一个只有8条指令的图灵完备编程语言

Brainfuck是Urban Müller的邪恶创造,他的目的似乎是为他之前在Amiga OS 2.0上写的一个最小的编译器创建一个图灵完备语言。他的编译器只有240 bytes大小(但是他在后来改进了它,-- 他告诉我一件事情,他设法努力将编译器弄到200字节以下)

我最初开始接触Brainfuck是因为我对在X86 Linux写程序的兴趣.同时我也把它作为一个工具用来创建ELF文件.最后,然而,我被这种违逆的实现给征服了,也开始为自己写一些实际的Brainfuck程序.

语言

一个Brainfuck程序有一个隐含的字节指针,称为“指示器”,它可以自由得在一个30000字节的数组中移动,初始时,这个数组全被设为0,指针自身被设为指向这个数组的开始.

Brainfuck程序语言包含8个命令,每一个代表一个单字符。

>

增加指示器

<

减小指示器

+

增加指示器指示的字节

-

减小指示器指示的字节

.

输出指示器指示的字节

,

输入一个字节并且存进指示器指示的字节

[

如果指示器指向0,则向后跳转到]的前一字节

]

如果指示器指向0,则向前跳转到[的后一字节

Brainfuck命令的语义也可以简便得用以下规则使用C语言来表示,(假设p提前被定义为char*类型)

> 转化成 ++p;

< 转化成 --p;

+ 转化成 ++*p;

- 转化成 --*p;

. 转化成 putchar(*p);

, 转化成 *p = getchar();

[ 转化成 while (*p) {

] 转化成 }

英文原版:http://www.muppetlabs.com/~breadbox/bf/

转载于:https://www.cnblogs.com/makor/archive/2012/12/06/2806223.html

Brainfuck,是一种极小化的计算机语言,它是由Urban Müller在1993年创建的。由于fuck在英语中是脏话,这种语言有时被称为brainf*ck或brainf***,甚至被简称为BF。 【内含:BF解释器,BF解释器源码,BF写的几个小程序】 ReadMe: Brainfuck 编程语言 [图灵完全] [8条指令] 语法: > 指针加一 < 指针减一 + 指针指向的字节的值加一 - 指针指向的字节的值减一 . 输出指针指向的单元内容(ASCII码) , 输入内容到指针指向的单元(ASCII码) [ 如果指针指向的单元值为零,向后跳转到对应的]指令的次一指令处 ] 如果指针指向的单元值不为零,向前跳转到对应的[指令的次一指令处 特性: 8KB 环状内存(初始化为0) <>操作不会越界 加减操作环状 +-操作不会溢出(0xFF + 为 0x00) 文件说明: bf.exe 解释器 Usage: bf [-options] source where options include: -b buffered input (default mode) 缓冲输入(按回车才输入,默认) -i not buffered input 无缓冲输入 -e not buffered input without echo 无缓冲输入且不回显 bf.cpp 解释器的源代码(纯C实现) hello.txt HelloWorld程序 up.txt 这个程序将你的输入(小写字母)转换为大写(回车结束) add.txt 这个程序对两个一位数做加法,并输出结果(如果结果也只有一位数的话)(例如:输入2+3) mul.txt 这个程序对两个一位数做乘法,并输出结果(如果结果也只有一位数的话)(例如:输入2*3) factor.txt 这个程序分解多位数的因子,并输出结果(例如:输入1000) numwarp.txt 这个程序输入 ()-./0123456789abcdef 和空格的字符串,显示很有趣的排列结果(例如:输入520 1314) prime.txt 这个程序输入一个多位整数,输出从1到这个整数间的所有素数(例如:输入100) quine.txt 这个程序输出源代码本身 [以上程序,基本上依靠回车确认]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值