• [翻译]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/

  • 相关阅读:
    Bzoj 1537: [POI2005]Aut- The Bus 题解 [由暴力到正解]
    Bzoj 3126[Usaco2013 Open]Photo 题解
    Bzoj 3165 [Heoi2013]Segment题解
    Bzoj 2733: [HNOI2012]永无乡 数组Splay+启发式合并
    赛前集训前的总结(警醒)
    bzoj3316 JC loves Mkk题解
    9.22考试 crf的军训 题解
    Luogu3521 [POI2011]ROT-Tree Rotations
    CTSC2012 熟悉的文章
    UVA11468 Substring
  • 原文地址:https://www.cnblogs.com/makor/p/2806223.html
Copyright © 2020-2023  润新知