[あすかぜ・ねっと]あすかぜ・ねっとその他CIL Opcode > conv

conv - data conversion

Menu

CIL フォーマット

67 / conv.i1
68 / conv.i2
69 / conv.i4
6A / conv.i8
6B / conv.r4
6C / conv.r8
D2 / conv.u1
D1 / conv.u2
6D / conv.u4
6E / conv.u8
D3 / conv.i
E0 / conv.u
76 / conv.r.un

JVM フォーマット

85 / i2l
86 / i2f
87 / i2d
88 / l2i
89 / l2f
8A / l2d
8B / f2i
8C / f2l
8D / f2d
8E / d2i
8F / d2l
90 / d2f
91 / i2b
92 / i2c
93 / i2s

スタック

..., value → ..., result

詳細

スタック先頭の値を指定された型に変換します。 4バイト未満の整数はスタックにロードされる時点で4バイトに拡張され、 浮動小数点数はスタックにロードされる時点でネイティブ・サイズ (F) に 変換されていることに注意してください。

浮動小数点数を整数に変換した場合、値は 0 方向に丸められます。 float64 を float32 に変換した場合、精度が落ちます。 もし float32 に収まらない値であれば、 結果は infinity もしくは negative infinity になります。 整数の変換でオーバーフローが発生した場合、 あふれたビットは無視されます。 結果が4バイト未満の整数であれば、変換後に4バイトに拡張されます。

浮動小数点数から整数への変換でオーバーフローが発生した場合、 返される値は特定されません。 conv.r.un 命令は、スタックの先頭を unsigned として解釈し、 浮動小数点数を返します。値が float32 に収まる範囲であれば float32 型の値が、そうでなければ float64 型の値が返されます。

変換の際に Exception は発生しません。 変換できない場合に Exception を発生させるには、 conv.ovf 命令を使用します。


Copyright (C) 2000-2004 asukaze, All Rights Reserved.
Last Update: 2004/10/27
Mail: mail@asukaze.net