なんで現代の主流な VM (JVM/CLR) は,ともにスタックマシンモデルなんだろう… ? という疑問が生まれました. あと,ボスから出た,Java に特化している JVM 上で,果たして効率の良い実装はできるのだろうか ? という質問にも,明確に答えることができなくて,あたふたしてしまったので,ちょっと調べてみました. 高速かつ移植性の高い Java Virtual Machine の設計と実装 などによると,どうやらスタックマシンには, (1) 移植性の確保が容易 そもそも,多くの CPU アーキテクチャはレジスタマシンであるため,「なぜ JVM はスタックアーキテクチャなのか ?」という疑問が生まれることとなる. 一見スタックアーキテクチャは,レジスタアーキテクチャとは実行モデルが根本的に異なるため,効率的な実装が難しく,JIT などの実装も面倒になりそうなイメージがある. # ス
標準的用語は存在しない。書籍によって個々に用語やシンボルを定義している。多くの場合、「レジスタ転送」的な記号を使うが、構文定義はその都度行う必要がある。 レジスタマシンは以下のような要素から成る。 有限個数でかつ無限長のレジスタ: 有限個(またはモデルによっては無限個)のレジスタ群 r0, ..., rn があり、個々のレジスタは無限長で1つの非負整数(0, 1, 2, ...)を格納する。レジスタ同士の算術ができるか、一部のレジスタがアキュムレータとして算術に使われたり、アドレスレジスタとして使われたりする。 タリーカウンタ/マーク: モデルにおける離散的識別可能オブジェクト/マーク。最も単純なカウンタマシンでは、1回の算術演算で1つのオブジェクト/マークが追加または削除される(つまり、インクリメントまたはデクリメント)。Melzak (1961) や Minsky (1961) のカウ
今月は、いきなり月初めに休んで、先月までのSDカードの話題から遠ざかる。 Java というプログラミング言語がある。Java は動作する環境を規定していて、その動作環境を Java 仮想マシンと呼ぶ。それで、この Java 仮想マシンというのはスタック・マシンという分類になる。 それに対して、先月までの話題に上っていた H8 マイコンや R8C マイコンは、レジスタ・マシンと呼ぶ。世間ではレジスタ・マシンが広まっているので、レジスタ・マシン・アーキテクチャの機械をわざわざレジスタ・マシンと呼ぶことは無い。 このレジスタ・マシンとスタック・マシンの違いを簡単に書いておく。話を単純にするため、1 + 2 = 3 という簡単な足し算を行う例を考えてみよう。 レジスタ・マシンでは、レジスタに計算する数値を格納(ロード)して計算する。 1と2を足すならば、左の図のように、 1) レジスタAに1を格納
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く