CIL フォーマット
06
/ ldloc.0
07
/ ldloc.1
08
/ ldloc.2
09
/ ldloc.3
11
(uint8) / ldloc.s
(indx)
FE 0C
(uint16) / ldloc
(indx)
JVM フォーマット
15
(uint8) / iload
(index)
16
(uint8) / lload
(index)
17
(uint8) / fload
(index)
18
(uint8) / dload
(index)
19
(uint8) / aload
(index)
1A
〜1D
/ iload_
(n)
1E
〜21
/ lload_
(n)
22
〜25
/ fload_
(n)
26
〜29
/ dload_
(n)
2A
〜2D
/ aload_
(n)
※Javaではローカル変数と引数リストの区別はない。
ローカル変数は(引数の個数)から順に番号がつく。
※Javaでは型によって命令が異なる。
スタック
... → ..., value
詳細
indx番目のローカル変数をスタックに積みます。 ローカル変数は0から順に番号がついています。 このメソッドの initialize フラグが true であれば、 ローカル変数はメソッドの開始時に 0 に初期化されます。 最初の4つのローカル変数に関しては、 ldloc.0, ldloc.1, ldloc.2, ldloc.3 の利用が効率的です。 4番目から255番目の引数に関しては ldloc.s の利用が効率的です。
valueの型はメソッド・ヘッダで宣言されたローカル変数の型になります。
4バイトより小さいローカル変数はint32に拡張されてスタックにロードされます。 浮動小数点数はネイティブ・サイズ(F)に拡張されます。
Exception
このメソッドの initialize フラグが false であり、 SecurityPermission.SkipVerification権限が与えられていなければ、 「VerificationException」が発生します。