by shigemk2

当面は技術的なことしか書かない

JVMのレジスタなど。

Java VM は「スタック方式」で動作するスタックマシンですが、動的コンパイルされた部分はRISC、CISC、EPICなどのネイティブコードに変換され、「汎用レジスタ」を利用するコードへと変換されます。汎用レジスタを利用することにより、動的に生成したネイティブコードをより高度にスケジュールして、コードの並列化などの最適化を行うことができます

チューニングのためのJava VM講座(前編):Hotspot VMの基本構造を理解する (2/2) - @IT

JVMはレジスタを持たないスタックマシンであるため、計算時の作業領域としてスタックを利用している

JVMはスタックマシンでも、JITでレジスタを利用するようにコンパイルはしているので、実際にレジスタを利用しないわけではない

  • JVMのスタックはレジスタ的なもの
  • MIPSに限らずCPUが扱うのはレジスタとメモリでローカル変数という概念は存在しない
  • JITでレジスタを利用するようにコンパイル

jvm - n-3104のメモ

以下ツイート。

JVMはレジスタを使わないといってもそれはコンパイラ的な概念で、JVMのスタックがレジスタ的なもの。というか、JVMのスタックやローカル変数とはCPUのレジスタやメモリとは別のレイヤの話なので、安易に比較してはいけないという戒め。