ここでは、実際の Java コンパイラの実装について言及しています。
スタックはC構造体として実装されていると思いますが、本当の意味は次のとおりです。
Javaはこの構造でどのように計算しますか? たとえば、1 つのローカル変数が文字列型またはポインター型で、もう 1 つのローカル変数が double または int であり、Java がこれらの変数を操作する必要がある場合、たとえば両方を追加する場合、最初に両方を同じ型に変換してから追加しますか? 、値を返しますか?
多かれ少なかれ次のようになりますか?
struct var {
dataType type;
union{
char c;
int i;
double d;
void *p;
} value;
}
ここで、dataType はデータ型の列挙です。
例: 変数 A が double、変数 B が int、C が double であるとします。
C = A + B のバイトコードはどのように生成されますか? また、仮想マシンはこれらの異なるデータ タイプでどのように動作しますか?