Rational Developer for System z バージョン 7.6

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

このセクションで定義される構文を使用して、アセンブラー・プログラムまたは逆アセンブリー・プログラムをデバッグしながら 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」演算

算術式の評価

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

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


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

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