2 个版本
0.1.1 | 2020年11月6日 |
---|---|
0.1.0 | 2020年11月5日 |
#794 in 过程宏
5KB
BrainFuck 编译器
基于 Rust 过程宏元编程的 BrainFuck 编译器。
使用方法
查看 https://fatiherikli.github.io/brainfuck-visualizer/ 中的 BrainFuck 代码,了解其工作原理。
BrainFuck 编译器在编译时(元编程)生成以下代码以打印 "Hello World!",并在运行时打印它。
使用 Rust 过程宏方式实现。
extern crate brain_fuck;
use brain_fuck::brain_fuck;
fn main() {
println!("{}", brain_fuck!(
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.
>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
));
}
生成汇编代码
brain_fuck::main::h3aaadb2fa73e0763:
...
pushq %rbp
movq %rsp, %rbp
subq $64, %rsp
leaq l___unnamed_2(%rip), %rax
movq %rax, -16(%rbp)
leaq _$LT$$RF$T$u20$as$u20$core..fmt..Display$GT$::fmt::h45c22d68a23dc67a(%rip), %rax
...
l___unnamed_6:
.ascii "Hello World!\__int128"
.section __DATA,__const
.p2align 3
l___unnamed_2:
.quad l___unnamed_6
.asciz "\r\000\000\000\000\000\000"