トップページへ

- BFX のページ -

BFXアプリケーションのスクリーンショット

クリックすると拡大イメージを表示します

解説

難解プログラミング言語BrainFuckインタープリタの機能拡張版です。
BrainFuckの標準命令にくわえ、派生言語BrainCrashの追加命令4つとさらに独自の命令を追加した物になっています。

  • 1ページ256バイトのメモリが256ページあります。
  • 現状、ページ間のメモリの値をやりとりする命令がありません
  • コンソールアプリケーションですが、VCLを使っているのでWindowsでしか動きません。
  • 動作確認: Windows Vista

BrainFuckについてはWikipedia参照

BFXはフリーソフトです。付属のテキストファイルをよく読んだ上でご利用ください。

ダウンロード

詳細情報

命令一覧 (Standard / BrainCrash / BFX拡張)

○ BrainFuck標準命令

  • > - ポインタをインクリメント(+1)する。256になると0になる(0~255の範囲)
  • < - ポインタをデクリメント(-1)する。-1になると255になる(0~255の範囲)
  • + - ポインタの指すメモリの値をインクリメント(+1)する。255を+1すると0になる
  • - - ポインタの指すメモリの値をデクリメント(-1)する。0を-1すると255になる
  • . - ポインタの指すメモリの値を文字として表示する
  • , - ポインタの指すメモリの値を入力した文字の値に変更する
  • [ - ポインタの指すメモリの値が0ならば対応する]の直後へ移動する
  • ] - ポインタの指すメモリの値が0でなければ対応する[へ移動する

○ BrainCrash拡張命令

  • | - ポインタの指すメモリ(1)の値を次のメモリ(2)とOR演算して結果を次のメモリ(2)に格納しポインタを1進める
  • & - ポインタの指すメモリ(1)の値を次のメモリ(2)とAND演算して結果を次のメモリ(2)に格納しポインタを1進める
  • ^ - ポインタの指すメモリ(1)の値を次のメモリ(2)とXOR演算して結果を次のメモリ(2)に格納しポインタを1進める
  • ~ - ポインタの指すメモリの値をビット反転(NOT)する

○ BFX拡張命令

  • = - ポインタの指すメモリの値を0番のメモリにコピーする
  • @ - 0番のメモリの値をポインタの指すメモリにコピーする
  • * - ポインタの指すメモリの値を左に1ビットシフトする(*2する)
  • / - ポインタの指すメモリの値を右に1ビットシフトする(/2する)
  • \ - ポインタの指すメモリの値にポインタをジャンプする
  • $ - ポインタの指すメモリの値のメモリページにジャンプする(0~255の範囲)
  • "" - ""で囲った範囲を文字列としてポインタを1ずつ移動しながらメモリに書き込む。
  • () - ()で囲った範囲を数値としてポインタの指すメモリに書き込む。(絶対値のみ)
  • ※ 1Byteを超える場合は収まるまでポインタを移動しつつメモリへ書き込む。書き込み後は数字の次の番地へポインタが移動する。

サンプルコード

●BrainFuck標準命令によるHello, World!

+++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-.------------.<++++++++.--------.+++.------.--------.>+.

●BFX拡張命令によるHello, World!

"Hello, World!"\[.>]

動作情報

メモリに格納されるのは0~255迄の数字で、これを . 命令で出力すると、アスキーコード表に従って文字を表示します。
たとえば、メモリの値が10でこれを出力すると、コマンドプロンプト上で改行になります。

ライセンス

BFXは以下の条件によりライセンスされます。従えない場合、本ソフトウェアを利用する権利はありません。

  • 使用者はこれを用いて制作したソフト(プログラム)を自由に公開できます。
  • 使用者は本ソフトウェアを同梱してプログラムを配布することが出来ます。
  • 同梱して配布する際は必ず本ソフトウェアのアーカイブに付属しているbfx.txtも付属すること。
  • 逆アセンブル、逆コンパイルすることは自由ですが、作者がソースコードを公開することはありません。
  • 作者は本ソフトウェアにより生じたいかなる不利益、不具合も保証することはありません。自己責任の下ご利用ください。