sedbf
今日はsedです
ループは未対応ですが、それ以外はシンプルな置換でOK
s/,/\tcall getchar@PLT\n\tmov [rsp], rax\n/g
s/>/\tinc rsp\n/g
s/</\tdec rsp\n/g
s/+/\tinc qword ptr [rsp]\n/g
s/-/\tdec qword ptr [rsp]\n/g
s/\./\tmov rdi, qword ptr [rsp]\n\tcall putchar@PLT\n/g
1s/^/\t\.intel_syntax noprefix\n\t\.text\n\t\.global main\nmain:\n\tpush rbp\n\tmov rbp, rsp\n\tsub rsp, 0x1000\n\nmov rdi, rsp\n\tmov rcx, 0x1000\n\tmov al, 0\n\tcld\n\trep stosb\n\tmov rdi, 0\n/
$a\\tmov rax, 0\n\tleave\n\tret
hello_world.bf
++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++
>++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ +
>++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++
>++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++
>++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ +
>++++++++++ ++++++++++ ++++++++++ ++
>++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ +++++++
>++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ +
>++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++
>++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++
>++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++ ++++++++++
>++++++++++ ++++++++++ ++++++++++ +++
>++++++++++
<<<<<<<<<<<<
.
>.
>.
>.
>.
>.
>.
>.
>.
>.
>.
>.
>.
$ sed -f ./hello_world.bf > hello_world.s
$ gcc hello_world.s -o hello_world
$ ./hello_world
Hello World!
おわりに
この記事はn01e0 Advent Calendar 2023の22日目の記事です。
今日はSECCONの準備で忙しいので適当です。明日明後日はもっと忙しいのでもっと適当かも。
また、IPFactory OB Advent Calendar 2023の22日目の記事も兼ねています。
Comments