#brainfuck-compiler #meta-programming #brain #procedural #proc-macro #fuck

二进制 brain_fuck

基于 Rust 过程宏元编程的 BrainFuck 编译器

2 个版本

0.1.1 2020年11月6日
0.1.0 2020年11月5日

#794 in 过程宏

MIT 许可证

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"

无运行时依赖