CIL フォーマット
02
/ ldarg.0
03
/ ldarg.1
04
/ ldarg.2
05
/ ldarg.3
0E
(uint8) / ldarg.s
(num)
FE 09
(uint16) / ldarg
(num)
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ではローカル変数と引数リストの区別はない。
引数は0から順に番号がつく。
※Javaでは型によって命令が異なる。
スタック
... → ..., value
詳細
num番目の引数をスタックに積みます。 引数は0から順に番号がついています。 valueの型はメソッドのシグネチャで宣言された引数の型になります。
メソッドの最初の4つの引数に関しては、 ldarg.0, ldarg.1, ldarg.2, ldarg.3 の利用が効率的です。 4番目から255番目の引数に関しては ldarg.s の利用が効率的です。
ldargは可変長引数に対しては利用できません。 可変長引数のロードには arglist を使用してください。
4バイトより小さい引数はint32に拡張されてスタックにロードされます。 浮動小数点数はネイティブ・サイズ(F)に拡張されます。