generated at
バイトコード
特定のOSやハードウェアに依存しない設計
プロセスVMが実行するために設計された実行可能なプログラムのバイト表現
機械語より抽象度が高く設計されているものが多い
一つ一つの命令が1byte。8bit。
高級言語と比較して
プログラムサイズがコンパクト
だが、命令列からデータを取り出すフェッチ回数が増えがち
処理速度が高速
プログラムサイズがコンパクト
Java, Smalltalkなど


VMはバイトコードを実行する
機械から見る機械語のようなもの
必ずしもバイトコードというわけはない




バイトコードはopcodeとoperandの配列と考えることができる
これらはメモリ上で隣り合って配置される
バイトコードは、domain-specific machineのdomein-specific language(DSL)である

ドメイン固有のコンテキストのみで意味をなす命令を加えることができる
↓これらはx86-64とかにはない命令
すなわちこの辺も自分でデザインできるというわけかmrsekut
JVMのバイトコード
invokeinterface がある
これは、インターフェースメソッドを呼び出すための命令
getstatic
クラスの静的フィールドを取得する
new
指定されたクラスの新しいオブジェクトを作成する
Rubyのバイトコード
putobject
スタックに自分自身をロードし、オブジェクトにメッセージを送信するために送信し、任意のオブジェクトをスタックにロードする
Luaのバイトコード
テーブルやタプルへのアクセスと操作のための専用の命令
JavaScriptのバイトコード


参考