Rational Developer for System z、バージョン 7.6.1

アセンブラーおよび逆アセンブリー式の構文

このセクションで定義される構文を使用して、アセンブラー・プログラムまたは逆アセンブリー・プログラムをデバッグしながら Debug Tool コマンド式を書き込みます。

アセンブラー式は、次の書式で書き込むことができます。

共通構文エレメント

次の構文要素を使用してアセンブラー式を記述することができます。

ddd
10 進定数。ddd は有効な 10 進数。例えば、145。
ddd.ddddd.dEddddEdddd.dE+ddddE+dddd.dE-ddddE-dd
浮動小数点定数。d は 1 つ以上の 10 進数字で、E は文字 "E" です。例: 1.23、0.22、12E+10、または 2.456E-5。
X'xxxx' または X"xxxx"
16 進定数。xxxx は有効な 16 進の数字。 例: X'1F4C' または X"1F4C"

この定数の長さが 1 ~ 4 バイトの場合、算術計算またはストリング・コンテキストで使用できます。それ以外の場合は、ストリング・コンテキストでしか使用できません。

C'cccc''cccc'、または "cccc"
文字定数。例えば、C'F$3' または "F$3"

この定数の長さが 1 ~ 4 バイトの場合、算術計算またはストリング・コンテキストで使用できます。それ以外の場合は、ストリング・コンテキストでしか使用できません。

symbol
アセンブラー・ソース・プログラムで使用される有効なシンボル。例えば、lastName、UserVar8

シンボルが EQU 命令を使用して定義され、シンボルが最初にレジスターとして使用される場合、シンボルはそのレジスターに関連付けされます。シンボルをレジスターとして使用する意図で定義したが、シンボルを参照しないかまたはシンボルの最初の参照がレジスターとしてではない場合、Debug Tool はシンボルをレジスターではなく定数として定義します。例えば、命令 R7 EQU 7 を使用してシンボル R7 を定義し、R7 を参照しないかまたは最初の参照がレジスターとしてではない場合、Debug Tool はシンボル R7 をレジスター R7 ではなく定数 7 として定義します。

Debug Tool は、すべての逆アセンブリー・コンパイル単位およびシンボルがまだ定義されていないアセンブラー・コンパイル単位で、次のシンボルを暗黙的に定義します。

%symbol
有効な Debug Tool 変数。例えば、次のようになります。%ADDRESS

演算子

このセクションで定義される演算子を使用して、アセンブラー式および条件付きアセンブラー式を記述します。

すべての式で使用できる演算子

このセクションで定義される演算子を使用して、アセンブラー式を記述します。

+
加算
-
減算または接頭部の除去
*
乗算
/
除算
//
余り
||
連結 (C および X タイプのオペランドのみ)
&
ビット単位の AND
|
ビット単位の OR
(...)
演算順序を制御するための括弧。配列の添え字を指定するか、またはサブストリングを選択します。
記号 (添え字)
配列の添え字を指定する括弧。例えば、配列が命令 X DS 5F で定義されている場合、配列の最初のワードは X(1) で指定できます。
記号 (サブストリング)
文字または 16 進変数から 1 バイトのサブストリングを選択するための括弧。
記号 (開始サブストリング:終了サブストリング)
文字または 16 進変数から、開始サブストリングから終了サブストリングまでのバイトのサブストリングを選択するための括弧。
記号 (開始サブストリング::サブストリング長)
文字または 16 進変数から、開始サブストリングからストリング長のバイト数のサブストリングを選択するための括弧。

文字または 16 進数ストリングの配列の場合、これらの形式は、記号 (添え字,サブストリング)、記号 (添え字,開始サブストリング:終了サブストリング)、または記号 (添え字,開始サブストリング::サブストリング長) を使用して組み合わせることができます。

->=>%>、 または ==>
間接演算子。次のように使用します。
operand1<indirection_operator>operand2
operand1 の内容を、operand2 を含む DSECT の基底アドレスとして使用します。例えば、R1->DCBDDNAME は、レジスター 1 の内容を DCBDDNAME を含む DSECT の基底アドレスとして使用するように Debug Tool に指示します。
operand1<indirection_operator> または operand2<indirection_operator>+operand2
<indirection_operator> の後に正符号 (+) がある場合は、operand2 をオフセットとして使用します。例えば、X-> は、X の内容を記憶装置のアドレスとして使用するように Debug Tool に指示します。もう 1 つの例として、R3->+X'22' は、レジスター 3 の内容に 16 進数 22 (オフセット) を加算して記憶装置のアドレスを決定するように、Debug Tool に指示します。

間接演算子の後に記号が指定されない場合、長さは暗黙的に指定されません。この形式が最も一般的に使用されるのは、長さが別のオペランドで決定できる場合です。 例えば、コマンド STORAGE(R10->,4)=22 は、STORAGE コマンドの第 2 オペランドで長さが指定されます。 長さが必要であるが、別のオペランドで指定されていない場合にこの形式を使用すると、長さはデフォルトの 4 になります。

次の間接演算子は、使用するアドレス指定を示します。

->
現在の Amode 指定を使用する。
==>
64 ビットのアドレス指定を使用する。
=>
31 ビットのアドレス指定を使用する。
%>
24 ビットのアドレス指定を使用する。
(.)
ドット演算子 (ピリオド)。 ドット演算子は、DSECT 内の名前をラベル付き USING ステートメントでの名前で修飾するために使用できます。 ドット演算子の直前には、前のラベル付き USING ステートメントのラベルを置き、直後には、DSECT に定義されている名前を置く必要があります。
ADDR'
記号のアドレスを返します。ADDR' のオペランドが現行 CU 内で既知であるが、別の CSECT に存在する場合、ADDR' 関数は 0 を返します。例えば ADDR'ABC は、記号 ABC のアドレスを返します。

シンボルのアドレスが 64 ビット・アドレスの場合、ADDR' は 8 バイト値を戻します。それ以外の場合、ADDR' は 4 バイト値を戻します。

L'
記号の長さを返します。例えば L'ABC は、記号 ABC の長さを返します。

条件式でのみ使用できる演算子

以下の演算子は、条件式 (例えば、IF コマンド) でのみ使用できます。

=
2 つのオペランドの同等性を比較する。
¬=
2 つのオペランドの不等性を比較する。
<
左方のオペランドが右方のオペランドより小さいか否かを判断する。
>
左方のオペランドが右方のオペランドより大きいか否かを判断する。
<=
左方のオペランドが右方のオペランドより小または等しいかどうかを判断する。
>=
左方のオペランドが右方のオペランドより大または等しいかどうかを判断する。
&
論理「AND」演算
|
論理「OR」演算

演算式の評価

アセンブラーおよび逆アセンブリー式は、64 ビット・オペランドが検出されるまで 32 ビットの精度で評価されます。 64 ビット・オペランドが検出された時点で、 両方のオペランドの精度は 64 ビットに変換され、式におけるそれ以降のすべての演算子は 64 ビットの精度で評価されます。すべての式を 64 ビットの精度で評価するには、括弧を使用して演算の順序を変更し、 最初に評価されるオペランドが少なくとも 1 つの 64 ビット・オペランドを保持するようにできます。

64 ビットの命令をサポートしないハードウェア上でプログラムを実行している場合、Debug Tool は 64 ビットの演算式を評価しますが、64 ビット汎用レジスターにはアクセスできません。


ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)