gauche
昨晩、ヒープオブジェクトの項で道に迷いました。
情報投入中。pattern variable って何だ。 てか、クラスタグのあたりで道に迷ってたりします。とりあえず下書きベースで保存した後で調べてる弱さっぷり。
なんとか Reading Gauche 方面に出力したいんですが、なかなか微妙。
重箱のスミをツツく。
とりあえず固定なソレを試してみます。色々試行錯誤したんですが以下なソースで
曰く、「-I とか -l とかのフラグは gauche-config で取れます。」との事。 昼休みが終わりそうな瞬間に試してみた。以下は MacBook で試した結果。 $ gauche-config -I -I/opt/local/lib/gauche/0.8.13/include $ gauche-config -L -L/opt/local/lib/gauche…
とりあえず以下なカンジで。 Scm_Init 呼び出して Scm_GlobalVariableRef で + とかをナニ その後どうすんだろ。Scm_ApplyRec? Scm_Apply?
とりあえず mac のヘッダのありかが分かった。/usr/local/lib/gauche/0.9/include らしい。どうやって探したのか忘れましたが、/usr/local とか /opt/local とかを見てたら、だったんだと思います。
でびあんだと gauche-dev パケジを導入しないと微妙な模様。入れてみた。
Reading Gauche のタグについてな項のモディファイ中。いっちゃん最後の_Heap object_では以下な記述をしてます。 末端 3 bit が 111 ペアと flonums 以外の heap-allocated なオブジェクトの最初のワードにのみ、との記述あり 末端 3 bit をマスクして ScmC…
確認したら 0.8.11 な実装とは異なる模様。gauche.h のコメント見つつ以下にまとめ。
ってコトで libgauche をナニ。
とりあえず着手してみた。最初の一発目から微妙ッス。 てか、このあたりって 0.9 も 0.8 も無いように思ってるんですが、いいのかなぁ。 最初のハードルはマクロのひらかも。
曰く VMEvalとかVMApplyの戻り値はevalやapplyの結果ではないことに注意してください。 これらの手続きはVMのスタックに引数を積み、*次にVMが制御が戻った時点で* 「VAL0に格納された手続きを、スタックに積まれた値を引数として呼び出す」という コードが…
面白いんですが整理が大変。とりあえず確認したのは Scm_ApplyRec 手続きからなんですが、ここでは引数で渡されたリストの要素を取り出しながら vm->vals 配列に格納して apply_rec 手続きを呼び出してます。 apply_rec 手続きの定義が以下。 static ScmObj …
なんとなくこうなっていくんだな、というあたりは見えかけてたんですが、なんとなく腑にオチないな、と言いつつ repl_read_cc 手続き (repl.c の L102) 見てて微妙な違和感。 Scm_VMPushCC(repl_eval_cc, data, 4); return Scm_VMEval(result, SCM_FALSE);よ…
現実トウヒがてら、ざくっと掘削したメモとか帰宅後に掘削したメモとか。
昨晩掘削したあたりは 0.8 系と変わりは無いのかな。
それ以前な部分を見ている状態だったり。
とりあえず main.c の 516 行の } else { Scm_Repl(SCM_FALSE, SCM_FALSE, SCM_FALSE, SCM_FALSE); }から確認開始。knishii さんが掘ってるナニも確認しつつ。
なんとなく gosh 起動して入力してみたら一発ツモ。なんで現実トウヒはこんなに生産性が高いのか、と小一時間説教 (誰 gosh> (disasm (lambda (a b c d) (e d))) main_code (name=#f, code=0x4099c0, size=3, const=1, stack=4): args: #f 0 LREF0-PUSH-GREF…
empty-env が戻す手続きオブジェクトは error 手続きを呼び出して例外を発生させる。 (define empty-env (lambda () (lambda (sym) (eopl:error 'apply-env "No binding for ~s" sym))))Gauche では guard という手続きがあるので has-association? はこうす…
Android ビルドすんのに 15GB 程度の領域が必要との事にて、VirtualBox 環境再度作成に着手。ディスク 20GB 作成中なんですが結構時間がかかっております。しかも df 見たら 2 週間たってないのに 50% を越えようとしているな。
作成着手。とりあえず configure して $ CC=arm-linux-gnueabi-gcc AR=arm-linux-gnueabi-ar LD=arm-linux-gnueabi-ld \ RANLIB=arm-linux-gnueabi-ranlib ./configure --host=armel-unknown-linux \ --build=arm-linux-gnueabi --enable-multibyte=utf-8 --…
とりあえず armel な gauche と libgauche.so ができたみたいなんですが、動作確認ができん。どうしたものやら、と言いつついくつか対処案を列挙。 Android 丸ごと作ってそこに libgauche.so と gosh を入れちゃう 必要な *.o がまるっと入ってる gosh を作…
普通に make したらどうなるんだろ、という事にトライしてみました。-static 付けずに make して emulator の /system/lib とか /system/bin とかに置いたらどうなるのか、と。
参考にしたのは、ARMクロス開発環境構築(ひまじめ)。なんですが、emdebian 凄いぞ。 ちなみに職場端末にて色々試験してたんですが母艦は macbook で、クロス環境作りきらなかったので、Debian 方面にニゲたのですがこちらも微妙で最後の手段として Ubuntu に…
emacs+gauche で SICP に着手、との連絡が twitter 経由でナニ。 sw@mac わははは的な世界が若いうちから広がるなんて裏山の椎茸。
EoPL の前にこっちをヤッておく事に。とりあえず、昨晩の使用例を元に記述投入。もう少しネカせてレビュ依頼する方向。
早めに寝る、と言いつつ disasm の旅に着手してしまう。基本的には val0 を push GLOBAL_REF で束縛を解決して val0 に格納 val0 を呼び出す という事で色々試しててようやく出た。