アカウント名:
パスワード:
Flashみたいなもの?
Javaみたいなものだよ。また一歩javascriptがJavaに近づいたな。
もうちょっと詳しく言うとJavaバイトコードみたいなものだな。
一般的には中間言語方式のコンパイラ・インタープリタですかね.
古くはUCSD pSystem [wikipedia.org]とか, FIG FORTH [forth.org], それにMS-BASICあたりから続く方法ですね.
多くの中間言語インタープリタがスタックマシン [wikipedia.org]モデルで実装されていたりするんだけど, 今回のはどんな構造なんだろう?
今回もスタックマシンですCやC++で書かれたプログラムをwebassemblyにコンパイルするのが最初の目標ですemscriptenで普通のjavascriptやasm.jsにコンパイルするのはやっぱり強引だったということでしょう
中間言語としてはスタックマシンではなく AST を保っているはず。ASTのエンコーディングがスタックマシンになっているだけで。
FIG FORTHの実装って中間言語だったのか・・・
30年以上前に移植したことがあるんですが, スタックマシンを構築するプリミティブなワードと中間言語を処理する内部インタプリタ, そしてOS/BIOSを直接叩くIO部分だけはアセンブラで組む必要がありますが, それ以外は基本的にワード定義の並びのままワードへのポインタ(相対アドレスだったかも)がリストになっています. この様な構造のため, 最小限の手間で多くのCPU/動作環境に移植できたわけですね. CPU/動作環境が雑多で, ハードウェアの制限が多かった1970年台末から1980年台初頭らしい作りです.
ただこうした構造から, 動作速度, 特にFORTHらしい多重のワード呼び出しはオーバーヘッドが大きくてかなり遅く, 当時の8bit CPUでは実用にはかなり厳しい状態でした. 速度が問題になる部分はアセンブラでワードを組んで, それをFORTHプログラムから呼び出すという感じですね.
threaded codeというやつですなhttps://en.wikipedia.org/wiki/Threaded_code [wikipedia.org]fig forthはdirect threadingタイプ
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
物事のやり方は一つではない -- Perlな人
結局のところ (スコア:0)
Flashみたいなもの?
Re: (スコア:0)
Javaみたいなものだよ。
また一歩javascriptがJavaに近づいたな。
Re: (スコア:0)
もうちょっと詳しく言うとJavaバイトコードみたいなものだな。
Re:結局のところ (スコア:1)
一般的には中間言語方式のコンパイラ・インタープリタですかね.
古くはUCSD pSystem [wikipedia.org]とか, FIG FORTH [forth.org], それにMS-BASICあたりから続く方法ですね.
多くの中間言語インタープリタがスタックマシン [wikipedia.org]モデルで実装されていたりするんだけど, 今回のはどんな構造なんだろう?
Re:結局のところ (スコア:2, 興味深い)
今回もスタックマシンです
CやC++で書かれたプログラムをwebassemblyにコンパイルするのが最初の目標です
emscriptenで普通のjavascriptやasm.jsにコンパイルするのはやっぱり強引だったということでしょう
Re: (スコア:0)
中間言語としてはスタックマシンではなく AST を保っているはず。
ASTのエンコーディングがスタックマシンになっているだけで。
Re: (スコア:0)
FIG FORTHの実装って中間言語だったのか・・・
Re:結局のところ (スコア:1)
30年以上前に移植したことがあるんですが, スタックマシンを構築するプリミティブなワードと中間言語を処理する内部インタプリタ, そしてOS/BIOSを直接叩くIO部分だけはアセンブラで組む必要がありますが, それ以外は基本的にワード定義の並びのままワードへのポインタ(相対アドレスだったかも)がリストになっています. この様な構造のため, 最小限の手間で多くのCPU/動作環境に移植できたわけですね. CPU/動作環境が雑多で, ハードウェアの制限が多かった1970年台末から1980年台初頭らしい作りです.
ただこうした構造から, 動作速度, 特にFORTHらしい多重のワード呼び出しはオーバーヘッドが大きくてかなり遅く, 当時の8bit CPUでは実用にはかなり厳しい状態でした. 速度が問題になる部分はアセンブラでワードを組んで, それをFORTHプログラムから呼び出すという感じですね.
Re: (スコア:0)
threaded codeというやつですな
https://en.wikipedia.org/wiki/Threaded_code [wikipedia.org]
fig forthはdirect threadingタイプ