博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[翻译]Brainfuck
阅读量:6637 次
发布时间:2019-06-25

本文共 737 字,大约阅读时间需要 2 分钟。

一个只有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) {

] 转化成 }

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

你可能感兴趣的文章
Jackson xml json
查看>>
TortoiseGit(乌龟git)保存用户名密码的方法(转)
查看>>
java并行调度框架封装及演示样例
查看>>
摘:《自动化测试技术领航》
查看>>
华硕灵耀3 Deluxe获得“创新设计奖” 但它值得买吗?
查看>>
【翻译】Sklearn与TensorFlow机器学习实用指南 —— 第16章 强化学习(上)
查看>>
Python第一讲——高质量数据挖掘模型开发七步法
查看>>
运维老鸟教你安装centos6.5如何选择安装包
查看>>
终于解决了一个Win7 下 VS 编译的问题,困扰了我好几个月
查看>>
企业级nginx基础、负载、读写分离技术(续一)
查看>>
利用DBMS_ADVISOR.TUNE_MVIEW包生成物化视图创建语句
查看>>
系统安装EMC多路径软件
查看>>
Web前端——Head区域代码规范
查看>>
我认为的android入门学习策略
查看>>
ssh服务配置
查看>>
Windows 8 异步编程
查看>>
XenDesktop项目的规划
查看>>
RDS Best Practices — Fast and Stable Migration to RDS
查看>>
C# 进程间通信(共享内存)
查看>>
jvm(13)-线程安全与锁优化(转)
查看>>