CIL フォーマット
15
/ ldc.i4.m1
16
〜1E
/ ldc.i4.
(0〜8)
1F
(int8) / ldc.i4.s
(num)
20
(int32) / ldc.i4
(num)
21
(int64) / ldc.i8
(num)
22
(float32) / ldc.r4
(num)
23
(float64) / ldc.r8
(num)
JVM フォーマット
02
/ iconst_m1
03
〜08
/ iconst_
(0〜5)
09
〜0A
/ lconst_
(0〜1)
0B
〜0D
/ fconst_
(0〜2)
0E
〜0F
/ dconst_
(0〜1)
10
(byte) / bipush
(num)
11
(byte*2) / sipush
(num)
12
(uint8) / ldc
(index)
13
(uint8) / ldc_w
(index)
14
(uint8) / ldc2_w
(index)
※Javaでの ldc, ldc_w, ldc2_w 命令は、 ランタイム・コンスタント・プールからスタックにコピーを行う。
スタック
... → ..., num
詳細
スタックに定数を追加します。 -1 から 8 までに関しては ldc.i4.m1, ... ,ldc.i4.8 を、 -128 から 127 までの整数には ldc.i4.s を利用できます。 これらの短縮表記を利用した場合、スタックには4バイト整数として積まれます。
8バイト整数の定数をスタックに積むには、以下の3通りの方法が考えられます。