BrainFuck 人肉编译规则
来源:互联网 发布:网络支付软件有哪些 编辑:程序博客网 时间:2024/06/10 03:17
简介
Brainfuck是一种极小化的计算机语言,它是由Urban Müller在1993年创建的。由于fuck在英语中是脏话,这种语言有时被称为brainf*ck或brainf**k,甚至被简称为BF。
也算是一个奇葩语言吧,不过好像没啥实际作用,因为太轻量了,只能用于表示简单的某些简短的字符串(推荐装逼表白使用吧,其它大概没啥卵用),解析规则还挺有意思的,好久没写博客了,记录一下上午研究成果.
解析规则
- >: 指针位置右移一位
- <: 指针位置左移一位
- +: 指针所指向的位置里面的值加1
- -: 指针所指向的位置里面的值减1
- . :输出指针当前位置指向单元格中的内容
- [: 如果指针指向的单元值为零,向后跳转到对应的]指令的次一指令处
- ]:如果指针指向的单元值不为零,向前跳转到对应的[指令的次一指令处(额…好像比较难理解,只是用于循环某一段代码而已,两个一般联合使用)
实践出真知,举个栗子吧..
++++++++++[>+++++++++>++++++++>+++++++<<<-]>>>++.---.<----..+++.
++++++++++[>+++++++++>++++++++>+++++++<<<-]
先来看看前面这一坨, []根据解析规则定义,这俩中括号为将括号内的代码执行N次
至于N等于几,取决于[]前面的+号数量,前面是10个,即为重复十次;
再来看一下括号里面,> 代表向右移位指针,如果指针右边之前没有移动到过,及说明需要创建新的空间 ,并将指针所指向的内容
如图,指针从-10的位置开始(当然,一开始里面不是10,是0,我只是方便说位置)作为起点,向右一动一位,迎来了九个+,将第二格子里面数字加到9,再右移,把第三个加到8,第四个加到7,然后想左移动三次,将第一个减到-1.
因为这段旅程是在方括号里面,为循环体,循环十次,形成上图效果.且指针位置位于第一个格子
至于为什么要做个90 80 70呢,其实是为了方便输出Ascll码,因为想要输出的英文字符,大概都在这个区间,构造一个基数,后面不需要写太多的东西,移到接近的数值位置操作就可以了
>>>++.---.<----..+++.
再来看后面这一坨 ,当前指针位于第一个格子,右移3 ,++,让70变成72,”.”代表输出当前指针所指向位置的数值,输出 72.
同理,输出69 、76、 76、79
对照上表,输出的英文字符为Hello
阅读全文
0 0
- BrainFuck 人肉编译规则
- BrainFuck-编译器用JAVA实现
- Brainfuck
- Brainfuck VM
- brainfuck language
- brainfuck 一览
- brainfuck语言
- BrainFuck语言
- Brainfuck--PyFuck
- 人肉搜索、人肉语言及人肉程序设计
- 人肉搜索引擎
- BrainFuck解释器 (BrainFuck Interpreter) JavaScript实现
- 自定义编译规则
- 自定义编译规则
- makefile的编译规则
- gcc编译规则
- makefile编译规则
- Prolog Brainfuck 解析器
- 11.8学习心得
- Deep Reinforcement Learning
- python pickle模块(数据持久存储)
- Android Studio 中使用FFMPEG
- Go 安装
- BrainFuck 人肉编译规则
- PHP+MySQL存储数据出现中文乱码的问题
- HDU-2191 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活(多重背包 入门题)
- FPN(Feature Pyramid Networks for Object Detection)安装与训练
- Posix消息队列异步通知功能
- 应用奔溃dSYM分析
- Android Studio使用Git创建分支,合并分支
- 浏览器是如何工作的——渲染部分
- 深入理解java线程池—ThreadPoolExecutor