CIL フォーマット
10 (uint8) / starg.s (num)
FE 0B (uint16) / starg (num)
JVM フォーマット
36 (uint8) / istore (index)
37 (uint8) / lstore (index)
38 (uint8) / fstore (index)
39 (uint8) / dstore (index)
3A (uint8) / astore (index)
3B〜3E / istore_(n)
3F〜42 / lstore_(n)
43〜46 / fstore_(n)
47〜4A / dstore_(n)
4B〜4E / astore_(n)
※Javaではローカル変数と引数リストの区別はない。
ローカル変数は(引数の個数)から順に番号がつく。
※Javaでは型によって命令が異なる。
スタック
..., value → ...
詳細
スタックの先頭を取り出し、num番目の引数のスロットに移動します。 valueの型はメソッドのシグネチャで宣言された引数の型と 等しくなければなりません。 0番目から255番目の引数に関しては starg.s の利用が効率的です。
starg命令は可変長引数に対しては使用できません。
4バイトより小さい引数には、移動の際にint32から切り詰められます。 浮動小数点数はネイティブ・サイズ(F)から丸められます。