算術定数
アセンブラー言語は、アセンブリー・モードに依存する算術定数を提供します。
アセンブラー言語は、以下の 4 種類の算術定数を提供します。
- 10 進法
- 8 進数
- 16 進数
- 浮動小数点数
32 ビット・モードでは、表現できる最大の符号付き正整数は、10 進値 (2 * *31)-1 です。 負の最大値は-(2 * *31) です。 64 ビット・モードでは、表現できる最大の符号付き正整数は (2 * *63) -1 です。 負の最大値は-(2 * *63) です。 基数 (例えば、10 進数、16 進数、または 8 進数) に関係なく、アセンブラーは整数を 32 ビット定数と見なします。
定数の解釈は、アセンブリー・モードによって異なります。 32 ビット・モードでは、 AIX® アセンブラーは以前の AIX® バージョンと同じように動作します。アセンブラーは整数を 32 ビット定数と見なします。 64 ビット・モードでは、すべての定数は 64 ビット値として解釈されます。 これにより、期待とは異なる結果が生じる可能性があります。 例えば、32ビットモードでは、16進数値0xFFFFFFFFは10進数値"-1"に相当する。 ただし、64 ビット・モードでは、同等の 10 進数は 4294967295 です。 値"-1"を得るには、16進数定数0xFFFF_FFFF_FFFF_FFFF(または8進数の同等値)、または10進数値-11を使わなければならない。
32 ビット・モードと 64 ビット・モードの両方で、ターゲット・ストレージ域のサイズが小さすぎて式の結果を入れることができない場合は、整数式の結果が切り捨てられることがあります。 (このコンテキストでは、切り捨てとは、余分な最上位ビットを除去することを意味します。)
大きな定数、特に 64 ビット値の読みやすさを向上させるために、アセンブラーは下線 ("_") を含む定数を受け入れます。 文字。 下線は、最初の数値位置を除き、数値内の任意の場所に使用できます。 例えば、以下の表について考えてみます。
| 定数値 | 有効/無効 |
|---|---|
| 1 から 800 _500 | 有効かどうか |
| 0xFFFFFFFF_00000000 | 有効かどうか |
| 0b111010_00100_00101_00000000001000_00 | 有効 (これは "ld 4,8 (5)" 命令です) |
| 0x_FFFF | 無効 |
3 番目の例は、命令内のさまざまなフィールドを説明するために下線文字が使用される命令のバイナリー表現を示しています。 最後の例には 16 進接頭部が含まれていますが、直後の文字が有効な数字ではありません。そのため、定数は無効です。