オレオレ言語
型に応じたデータ変換のうち、reintepretはちょっとJSでは難しいかなと思ったけど、TypedArrayとDataView使って簡単にできたんだった。。
2020-06-01 06:59:16type conversionのwasm instructionをJSで使えるようにしてみた。全部使うかわからんけどね。 pic.twitter.com/chtdeWp3Mx
2020-06-01 05:15:15reinterpretというのは同じビット幅を持つ整数と実数をビット列はそのままに型変換するというやつ。 f32.const 1 i32.reinterpret_f32 これを実行するとスタックにはi32の0x3F800000が入る。wasmのスタックに入ってる値は型情報を持っているということですわな。。
2020-05-31 17:37:25型変換構文はTypeScript風である。 a:i64; b:f32 <i32>a;// wrap <f64>b;// promote reinterpret <i64>b; // reinterpret 型変換構文がどの命令を選ぶのかは変換先と変換元の型で決まる。
2020-05-31 17:01:22wasmは型変換のインストラクションがある。これをまんま構文に当てはめていこうと当初考えていた。 1.整数<-->実数の変換 ・convert_u/s,trunc_u/s 2.bit幅の変換(32bit <--> 64bit) ・wrap,extend_u/s,demote,promote 3.破壊的変換(reinterpret type conversion) ・reinterpret
2020-05-31 16:43:31定数式処理を実装している。今は型変換をどうしようか考えているところ。定数式であっても型チェックを行い、型が異なる場合はエラーとするつもりである。暗黙変換は行わない方向で進めているから、型変換の構文は必要である。
2020-05-31 16:24:58しかしwasmのフラットモードだと式は逆ポーランド記法っぽくなるよな。 i32.const 1 ;; スタックに積む i32.const 2 ;; スタックに積む i32.add ;; スタックから左辺値・右辺値を取り出して加算し、スタックに積む まあ、どうでもいいことだが。。
2020-05-30 18:13:07wasm S式で式を書くとポーランド記法になる。LISPもそうなるのかな。同じS式だからね。。 pic.twitter.com/te1MIrzotM
2020-05-30 18:02:43式を処理する関数は、関数を再帰的に呼び出しながら式ツリーを辿っていき、値(変数の値やリテラル)に到達したら計算しながら戻る感じなんだよね。
2020-05-30 17:55:30ビットの並びを反転させるというのも最初見たときは???だった。理解できたときは嬉しかったのでQiitaに書いたほどだった。 qiita.com/SFPGMR/items/4…
2020-05-30 17:26:25