a24z

Haskellは適当な勉強しかしてないので、基本的な知識が欠けているような。あんまり参考にしてはいけません。 data CondOp = Gt | Ge | Lt | Le | Ne | Eql deriving (Eq) -- deriving(Eq)!!deriving (Eq)を知らなかったので、これまで(Eq CondOp)を一個一…

http://morihyphen.hp.infoseek.co.jp/files/a24z-futon.tar.gz CFG(のようなもの)ができたー testToplev "module X; machine X { int x =8; if ( x ) { x=9; } else { x=10; } int y=800; }"が、画像のやつ。 Haskellには、fglとかいうグラフライブラリが…

定数畳みこみ

*Parse> test toplev "module X; machine x { int x=9 ; int y = 8+x-2; }" ("X",[("x",[],[(int)(local,"x",int,0) = 9,(int)(local,"y",int,1) = (+ (local,"x",int,0) 6)])])できたー。(たしざんだけ) http://morihyphen.hp.infoseek.co.jp/files/a24z-…

とりあえず、三番地文までできたよー。 *Parse> test toplev "module a; machine x | int x | int y { y = 9; if ( y== x+y ) { y=20; } }" ("a",[("x",[(state,"x",int,0),(state,"y",int,1)],[(state,"y",int,1) = 9, branch: [(local,"T",int,2) = ((int,…

ネタがないからコンパイラを書こう。 たまーに、ネイティブコンパイラが書きたくなったりするので、そういうときはa24zの出番だよ。a24zは、おもに暇潰しのための言語です。ネタがなくなったら使われます。 自分でコンパイラ書けば、C言語では使えないような…

あまりにネタを思い付かないのでa24zのコンパイラをocamlで書き直してる次第。自分車輪再発明。 let rec fold_binary iop fop l r = match (fold_const(l),fold_const(r)) with (Int(l),Int(r)) -> Int( iop l r ) | (Float(l),Float(r)) -> Float( fop l r …

あー、そういえば、忘れてた。わざわざ書いておいたのに。 a24z 0.91 前回のと比べてなんかバグを潰したはずです。 前回のはスタックの割り当てが腐ってたので、スタック使い過ぎると死にます。 他色々細かいのを修正したはず。 修正したの大分前なんで(参考…

やっぱり、call_entryの挙動はおかしい。というかバグ。

なんか、a24zのバグ出しみたいな感じになってきたな… 負の定数がまともに動かない。

昔の自分が正しかった。間違ってたのは今日増やしたところ。 あと、上のは、 vm->regs.fp = vm->stack + vm->stack_len - (init_argsize+init_framesize);が正しい。多分。

いや、上のも違う…なんかおかしいよ。

ひょっとして、酷いミスをしてたんじゃないか? vm.c:59行目あたりの vm->regs.fp = vm->stack + vm->stack_len - init_argsize;は vm->regs.fp = vm->stack - vm->stack_len + init_argsize;多分こう。

0.81 よし、今度は多分大丈夫。論理式も修正。 TODO: ファイル名を確認すること

まーーーーーったしてもURLを間違ってるよ。こんなのだから僕はダメなんだな。 でも、なんか、アホい間違いを2,3個見つけたので、先にそれ直します。明日にでも。

0.8 久しぶりに家でコード書いたよ。 Macのbisonの挙動がちょっと違ってたので修正。Linuxでおかしくなったかもしれない。 builtin対応 他色々バグ潰し 今回大きいのはビルトイン関数追加機能。 これは直接VM命令に変換される関数を定義できる機能。 利点は…

バグってたよ。

def start() -> int: let: x = 0 in: if !(x&&x) || !(x&&x): return 100 return 200こんな感じのコードをコンパイルするとおかしくなります。上の場合だと、条件が真になるはずなのにならない。 えーと、修正するのがほんのちょっと面倒なんで、次のバージ…

BSDとgcc2.95.3対応と、D対応をしていただきました。どうもありがとうございます。 0.7 色々意見もらえたので修正。あと、上のBSDパッチをあてた。 a24z_programのfield_countを見れば使われてるfieldの数がわかるようにした…けど、なんか、externの数もわか…

う、面倒だと思って放置してたところを突かれる… ていうかエラー行番号ぐらい教えてください(a24zとCGIのどちらの仕様かは知りません これは、ええと…悪いのはa24zのほうです。すいません。面倒だと思って放置してました。僕もこれは結構困るのですが(おい…

ふと

なんとなくわかったょ。8時くらいに寝て、2時くらいに起きると、色々やる気が出るようだ。必要なのは、不規則な生活だったようだ。 それはいいとして、 http://morihyphen.hp.infoseek.co.jp/files/a24z-0.5.tar.gz 適当に修正、追加。 gcc3では構造体に入れ…

0.4

0.4 昨日の浮動小数点比較とか。他色々。 それなりに動かしてみたので、大分マシになってるかと。というか、前のバージョンは使いものにならないので。 あと、あれ。やっぱり、僕はPythonみたいな文法が好きなんだと思う。別にPythonは好きではないが。 色々…

結局やる気出なかったので、最適化の話の続きはまた実装したくなったときにでも。 で、サンプルと、テストがわりになんか作ろうと思って、ちょろっとa24zを使ってみたんだが、思ったより面倒だな…これ。fieldつくって、getattr、setattr書いて、プログラムロ…

0.3

0.3 配列実装、関数呼び出しまわりが腐ってたのを修正、あと、なんか色々。投げやりなREADMEとか。 全然テストしてません。自己責任で。 昨日言ってた配列を実装。 field nanika_array: int [] def start() -> void : nanika_array[0] = 4 nanika_array[1] =…

最適化でヒかれる。

おおお、配列を実装してほしいとのリクエストをもらってしまった。 えーと、僕も配列くらいはあってもいいかなーって思ってるところなんですが、どういうインターフェースにしたらいいかがいまいちよくわからないところです。ローカルな配列が必要となると、…

a24z紹介

0.2 バグ潰しとか、追加とか色々。 a24z言語はLuaみたいな感じだけど、Luaよりもっと機能を限定したみたいな言語です。っていってもあんまりわからんな。ランタイムのサイズでいうと、5KBを切るぐらいの。 と、思ってたんだけど、Luaとはちょっと違うような…

プログラミング言語 a24z

なんかできた。 いや、ね、こう、別にコンパイラを作りたい、というわけではないんだけど、なんか暇だと作ってしまうようで。 シューティングを作ろうと思ったものの、雑魚キャラを書くのが超面倒だったので、雑魚キャラを書くスクリプト言語みたいな感じで…