オレオレ言語を作る

node.jsでWASMを吐くコンパイラを作っています。まだ完成には至っていません。。 https://github.sfpgmr.net/sgl2/ リポジトリ https://github.com/sfpgmr/sgl2
ゲーム開発 コンパイラ セルフまとめ
1704view 1コメント
3
S.F. @SFPGMR
今後はtypeブランチをいじっていこうと思ってるんだけど、途中で放置したせいかコードが動かなくなってるんだよなあ。コミット・ログを追っていこうかと思ってるけどいい加減なコメント入れてるからなあ。。
S.F. @SFPGMR
binaryenの現バージョンでSIMDのバイナリは吐くんだけど、ブラウザやnodeがまだ未サポートだから動かんちゅうことなんだろうな。
S.F. @SFPGMR
今はまだ開発中のステータスですな。
S.F. @SFPGMR
chromeにおけるsimdの実装って2017年2月から始まってるんだな。。 bugs.chromium.org/p/v8/issues/de…
S.F. @SFPGMR
今ちょっと実装したいなあと思ってるのはソースインクルードなんですが。
S.F. @SFPGMR
といいつつtypeブランチで何をしていたのかは半分忘れているので、自分のTogetterで思い出すと。 togetter.com/li/1266927
S.F. @SFPGMR
パーサーはpeg.jsの利用をやめて、手書きトークナイザ・パーサに戻そうかなと思っている。今のところブランチがpeg-ver/preprocess/typeとあるんだけど、peg-ver/preprocessで進めるのはやめて、typeブランチで進めることにする。
S.F. @SFPGMR
ここに来て「オレオレ言語」つくりのモチベーションも復活してきたので、少しでも進めることにしようかな。。といいつも進め方に迷いが多少あり、今年もまた実装が流動しそうな感じですわ。。良い言い方をすればですが。。
S.F. @SFPGMR
ML系の言語も知っておく必要がありそうだなあ。。
S.F. @SFPGMR
1つのアイデアとしては昔こういうのをtweetしとるな。。 twitter.com/SFPGMR/status/…
S.F. @SFPGMR
と書いてみたものの、いろいろ考えることが多く、特にメタ・プログラミングをどのようにソースコードで表現するのかうまいアイデアを思いつけない。
S.F. @SFPGMR
ブログを投稿。 「オレオレ言語のこれまでと今後」 sfpgmr.net/blog/entry/201…
S.F. @SFPGMR
ちょっとスッキリした。。
S.F. @SFPGMR
ようやくというか、考え迷っていたオレオレ言語の方向性が昨日固まったので、それに従って進めていこうかなと。キーワードは「CPUとGPUコードのシームレスな統合」なんだけど。きれいに言うと。ただそれを実現することは私にとっては容易いことではない。
S.F. @SFPGMR
しかしSIMDのサポートが入ったのはちょっと大きいよな。。
S.F. @SFPGMR
wabtをアップデートしたら新しいインストラクションでも大丈夫だったわ。とりあえずよかった。
S.F. @SFPGMR
まあいずれにしろ、動かなかった原因はテキスト・フォーマットが変わったということでいいかな。。
S.F. @SFPGMR
変わっとる。。「/」が消えたのですな。。 webassembly.github.io/spec/core/text…
S.F. @SFPGMR
インストラクションから特殊文字を消すという提案があったのですな。。 github.com/WebAssembly/sp…
S.F. @SFPGMR
コンパイラのエラーも消えたわ。。 github.sfpgmr.net/sgl2/ pic.twitter.com/yr0KIbHB4e
 拡大
S.F. @SFPGMR
masterブランチのコードは修正した。binaryen's s-expression text formatにね。。 github.com/sfpgmr/sgl2/bl…
S.F. @SFPGMR
ちゅうことはこの一文は正しいなあ。。 parseText(text: string): Module Creates a module from Binaryen's s-expression text format (not official stack-style text format). github.com/WebAssembly/bi…
S.F. @SFPGMR
やってみたらエラーでたわ。。 wat2wasm ./sgl2lib2.wat ./sgl2lib2.wat:10:6: error: unexpected token "f32.reinterpret_i32", expected an instr. (f32.reinterpret_i32 ^^^^^^^^^^^^^^^^^^^ ./sgl2lib2.wat:12:12: error: unexpected token local.get. (local.get $i) ^^^^^^^^^ . .
残りを読む(1517)

コメント

S.F. @SFPGMR 9日前
まとめを更新しました。
ログインして広告を非表示にする
ログインして広告を非表示にする