他人の空似自作物置場
squirrel3のコンパイル済みバイナリを逆変換、squirre3でそのまま動くわけではないが人が読めるレベルにはなる
プログラム名:CNutConverter 用途: squirrel3のコンパイル済みバイナリスクリプトを逆コンパイル。 ただし、squirrel3の元コードではなくオレオレ言語にすぎないので注意。 使い方: ・コンパイル済みsquirrel3の.cnutファイルを用意します。 ・cnut_converterにドラッグ&ドロップします。 ・拡張子.nutでテキスト出力されます。 ファイル解説: cnut_converter.exe プログラム本体 cnut_converter.sln ソリューションファイル、自分でコンパイルしたい人用 cnut_converter ソースファイル一式が入ったフォルダ Readme.txt 今読んでいるこれ sample.cnut 動作検証用cnut、とにかくいろいろな命令を使う事を目的としている sample-src.nut 動作検証用cnutを作るのに使ったソースコード 免責事項: これに同梱されたプログラムその他が原因で発生したいかなる損害も当方は一切関知しません。 また、全てのプログラムがウイルスではないという証明も、ウイルスに感染していないという証明もありません。 自己責任でお使いください。 Q&A: Q:ダブルクリックしても一瞬黒窓表示されるだけなんだけど A:ダブルクリックからの起動には対応していません。 変換したいcnutのドラッグ&ドロップか、コマンドラインからご利用ください。 Q:出力される.nutの中身が意味不明、squirrel3のコードになるんじゃないの? A:作者の力不足によりオレオレ言語に変換するのが精一杯でした。 逆コンパイルというより逆アセンブルですね。 それでもバイナリエディタで読むよりかはよっぽど読みやすいと思うので 頑張って手動でsquirrelに書きなおしてください。 Q:そもそもこのオレオレ言語の仕様がよくわからん A:基本的にはsquirrelのVMの仕様に従っています、いわばsquirrelVMアセンブラ。 VMにはstackが存在し、関数呼び出しなどは基本的にこのstackに値をつんで呼び出します。 コード中ではわかりやすさのために関数呼び出しは stack[1](stack[2], stack[3]) のように記載していますが、内部的にはstackの2番から順に2つを引数にして呼ぶ、という表現です。 stackとは書いていますが基本的にコード中でpushやpopする命令はなく 暗黙で、今はstackの何番までが生きているから次の値はx番に入れよう、などと扱われるようです。 一応関数呼び出し時やyieldなどではstackのベースアドレスが変わったりもしますが 基本的には気にしなくていいようです。 また、制御構文は基本的にはgotoで表現されています。 Q:出力のparameterListってなに? A:その関数を実行するのに必要な引数です。 関数でも何でもない一番外側のスコープにも存在するのは squirrelが外側実行時に暗黙でその引数を渡して実行するからのようです。 Q:localVarInfoListってなに? A:ローカル変数の一覧です。 stackの何番がそのローカル変数として扱われているかを表しています。 同じstackに複数のローカル変数が割り当てられているのは スコープを抜けてstackが空いた後に別のローカル変数が割り当てられるからです。 Q:boost使っててコンパイル通らないんだが A:boost入れましょう! boostいいよboost Q:その他バグをみつけた or 動作しない or 要望がある A:確認次第対応可能であれば対応します。 公開しても問題が無いメールアドレスにて 下部に記載されたアドレスまでメールをどうぞ。 メールアドレス:sweetie(あっと)click3.org ライセンス: ・本ライセンスにおいて、全ての条項は「変更の有無を問わず、明示暗示を問わず、商業慈善を問わず、 個人法人を問わず、保持使用を問わず、有料無料を問わず、全体一部を問わず、コピー派生を問わず 実行ファイルソースファイルを問わず、故意錯誤を問わず」と装飾されている物として扱う。 ・著作権者は本ソフトウェアに関する一切の保障義務をもたない。 ・上記条項唯一の例外として、本ライセンスに違反した場合を除いて著作権者から 本ソフトウェアに関する一切の法的措置を受ける事が無い事のみ保証される。 ・著作権者やその他保持者がこのライセンスの範囲で行う活動に支障が無い範囲であれば何を行っても構わない。 ・上記条項の”何を行っても構わない”には本ソフトウェアの製作者を偽っての再配布も含まれる。 ・全ての権利の行使において、著作権者への連絡、著作権者やライセンス条項の記載、 適用ライセンスなどの制限は一切存在しない。 著作権者名:sweetie 面倒な人向けライセンス解説: ライセンスについては記載義務すらありません。 自分が作成したものが如く扱うことができます。