0

私はJavaを中間言語に変換しようとしており、中間言語がどのように機能するかを理解している最中です。

私は元のJavaコードを持っています:http://cs.ucla.edu/classes/spring11/cs132/cs132/mj/Factorial.java

そして、私は中間コード表現(VAPOR)を持っています:http://cs.ucla.edu/classes/spring11/cs132/kannan/vapor-examples/Factorial.vapor

別のセットは次のとおりです。Javaの場合:http://cs.ucla.edu/classes/spring11/cs132/cs132/mj/BubbleSort.java

VAPORの場合:http://cs.ucla.edu/classes/spring11/cs132/kannan/vapor-examples/BubbleSort.vapor

私の質問は、すべてのVAPORコードにt.0 = HeapAllocZ(x)(がxありますint)があります。コンバーターがヒープサイズをsizeにする必要があるとどのように判断するのか疑問に思いますx。ではFactorial.vapor、に設定されてい4ます。ではBubbleSort.vapor、に設定されてい12ます。

ありがとう!

4

2 に答える 2

1

HeapAllocは、作成している構造のサイズに基づいているようです (412がバイト値であると仮定します)。データ構造が使用する変数を見て、それらの変数の合計バイト数を数えると、割り当てられている数がわかると思います。

于 2012-11-20T23:19:53.697 に答える
0

お気付きかもしれませんが、Java バージョンの Factorial にはデータ メンバーがありません。Java バージョンの BubbleSort には、2 つの 4 バイト int (合計 8​​ バイト) があります。

おそらく、オブジェクトの「オーバーヘッド」は 4 バイト (クラス オブジェクトへのポインターのサイズ) です。

したがって、Factial のオブジェクト サイズは 4 で、BubbleSort のオブジェクト サイズは 12 です。

于 2012-11-20T23:37:28.137 に答える