日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
目次 | 索引 |
DEPOSIT |
仮想メモリ中の指定した位置の内容を置換し,新しい内容を表示します。DEPOSIT コマンドと同時に EXAMINE コマンドを使用すると,会話型でプログラムをデバッグすることができます。 DCL コマンドの DEPOSIT コマンドは, OpenVMS Debugger の DEPOSIT コマンドに似ています。
DEPOSIT 位置=データ[,...]
位置
内容を変更したい仮想メモリ中の仮想アドレスの開始点,または仮想アドレスの範囲 (2 番目に指定するアドレスは,最初に指定したアドレスより大きくなければなりません ) を指定します。ここでは整数値,シンボル名,レキシカル関数,またはこれらの任意の組み合わせを含む,有効な整数式を指定します。基数修飾子は,アドレスを解釈する基数を決めます。省略時の設定は 16 進形式です。シンボル名は常に,それが定義された基数で解釈されます。基数演算子 %X,%D,または %O は,位置の前に指定できます。 16 進値は数字 ( または前に %X をつけた数字 ) で始めなければなりません。ここで指定する位置は,プロセスで現在実行中のイメージの,仮想アドレス領域内でなければなりません。
DEPOSIT および EXAMINE コマンドは,現在のメモリ位置へのポインタを保守します。 DEPOSIT コマンドはこのポインタを,修正した最後のバイトの次のバイトに設定します。後続の EXAMINE および DEPOSIT コマンドでピリオド(.) を使用すると,このポインタを参照することができます。 DEPOSIT コマンドを使用して指定したデータを格納できない場合は,ポインタは変更しません。 EXAMINE コマンドは,ポインタの値を変更しません。
データ[,...]
指定した位置に格納するデータを指定します。省略時の設定では,データは 16 進形式で指定されているとみなします。あとで 2 進形式に変換したり,指定した位置に書き込むことができます。複数のデータを指定する場合は,各データをコンマ (,) で区切ります。 DEPOSIT コマンドは,指定されたアドレスから連続的な位置にデータを書き込みます。
ASCII 以外のデータを格納する場合は,有効な整数式を使用して複数のデータ項目を指定することができます。
ASCII データを格納する場合は,データ項目は 1 つしか指定できません。等号の右にあるすべての文字は,文字列であるとみなされます。これらの文字は大文字に変換され,空白は圧縮されます。
DEPOSIT コマンドの実行が終了すると,データが格納された仮想メモリアドレスと,その位置の新しい内容が表示されます。次の例を参照してください。
address: contents
現在のアクセス・モードで,指定したアドレスの読み込みはできても書き込みができない場合,DEPOSIT コマンドはその位置の元の内容を表示します。指定したアドレスからの読み込みも書き込みもできない場合は, DEPOSIT コマンドはデータ・フィールドにアスタリスク (*) を表示します。DEPOSIT コマンドは,その位置 ( 修正した最後のバイトの次のバイト ) にポインタを設定します。
数値のリストを指定すると,アクセス違反が発生する前に,いくつかの値は正常に格納されます。ASCII データを格納している間にアクセス違反が発生すると,何も格納されません。
基数修飾子: DEPOSIT または EXAMINE コマンドで,コマンド・インタプリタが数値リテラルを解釈する基数です。省略時の基数は, 16 進です。この場合,コマンド行に指定されたすべての数値リテラルは, 16 進数であるとみなされます。コマンド行で基数修飾子を変更すると,その基数が,後続の EXAMINE および DEPOSIT コマンドの省略時の基数になります。これは,他の修飾子でその設定を変更するまで続きます。次の例を参照してください。
$ DEPOSIT/DECIMAL 900=256 00000384: 256
DEPOSIT コマンドは,位置 900 と値 256 の両方を,10 進数として解釈しています。後続のすべての DEPOSIT および EXAMINE コマンドは,アドレスやデータに指定した数字を 10 進数とみなします。DEPOSIT コマンドは,常にアドレス位置を 16 進数で表示することに注意してください。
= ( 割り当て文 ) コマンドで定義されたシンボル値は,常にそれが定義された基数で解釈されます。
格納位置または格納データとして指定する 16 進数値は,数字 (0 〜 9) で始めなければなりません。数字 (0 〜 9) で始めないとコマンド・インタプリタは,シンボル名が入力されたとみなし,シンボルを置換しようとします。
DEPOSIT コマンドを入力する時に基数演算子 %X,%D,または %O を使用すると,現在の省略時の設定を変更することができます。次の例を参照してください。
$ DEPOSIT/DECIMAL %X900=10
このコマンドは, 16 進数 900 として指定した位置を,10 進数値 10 として格納します。
長さ修飾子: DEPOSIT コマンドの,省略時の長さの単位はロングワードです。データ値のリストを指定した場合,データは指定した位置から始まる連続したロングワードに格納されます。コマンド行で長さ修飾子を変更すると,その長さが,後続の EXAMINE および DEPOSIT コマンドの省略時の長さになります。これは,他の修飾子でその設定を変更するまで続きます。
ASCII 値を格納する場合,長さ修飾子は無視されます。
修飾子の位置に関する制限事項: DEPOSIT コマンドは,式を算術的に分析します。そのため,前にスラッシュ (/) が必要な修飾子は,正確に解釈されるためには,コマンド名の直後に指定しなければなりません。
/ASCII
指定したデータが ASCII であることを示します。データ項目は 1 つだけ指定できます。等号(=)の右にあるすべての文字は,文字列であるとみなされます。引用符(" ") で囲まないと,メモリに書き込まれる前にこれらの文字は,すべて大文字に変換され複数の空白は 1 つ空白に圧縮されます。
DEPOSIT コマンドは,仮想メモリに格納する前に,データを 2 進形式に変換します。 /ASCII が指定されている場合,または省略時の設定が ASCII モードの場合,ユーザが指定した位置は 16 進形式であるとみなされます。
/BYTE
一度に 1 バイトずつデータを格納するよう要求します。/DECIMAL
データが 10 進形式であることを示します。 DEPOSIT コマンドは,仮想メモリに格納する前に,データを 2 進形式に変換します。/HEXADECIMAL
データが 16 進形式であることを示します。 DEPOSIT コマンドは,仮想メモリに格納する前に,データを 2 進形式に変換します。/LONGWORD
一度に 1 ロングワードずつデータを格納するよう要求します。/OCTAL
データが 8 進形式であることを示します。 DEPOSIT コマンドは,仮想メモリに格納する前に,データを 2 進形式に変換します。/WORD
一度に 1 ワードずつデータを格納するよう要求します。
#1 |
---|
$ RUN MYPROG . . . [Ctrl/Y] $ EXAMINE %D2145876444 7FE779DC: 0000000000 $ DEPOSIT .=17 7FE779DC: 0000000017 $ CONTINUE |
RUN コマンドで,イメージ MYPROG.EXE を実行します。次に Ctrl/Y を押してプログラムを中断します。 /HEXADECIMAL および /LONGWORD 修飾子の省略時の設定が有効であるとみなされ, DEPOSIT コマンドは仮想メモリ位置 2145876444 にロングワード値 17(10 進数で 23)を格納します。
EXAMINE コマンドは,現在のメモリ位置 ( ここでは仮想アドレス 2145876444 ) にポインタを設定しているので,DEPOSIT コマンドでピリオド (.) を使用して,この位置を参照することができます。
CONTINUE コマンドで,イメージの実行を再開させます。
#2 |
---|
$ DEPOSIT/ASCII 2C00=FILE: NAME: TYPE: 00002C00: FILE: NAME: TYPE:... |
この例で DEPOSIT コマンドは,16 進形式で位置 2C00 に文字データを格納し,修正した後でこの位置の内容を表示します。現在の省略時の長さはロングワードなので,DEPOSIT コマンドからの応答は,完全なロングワードを表示します。反復記号 (...) は,最後のロングワード・データの後に DEPOSIT コマンドによって変更されない情報が残されていることを示します。
#3 |
---|
$ EXAMINE 9C0 ! Look at Hex location 9C0 000009C0: 8C037DB3 $ DEPOSIT .=0 ! Deposit longword of 0 000009C0: 00000000 $ DEPOSIT/BYTE .=1 ! Put 1 byte at next location 000009C4: 01 $ DEPOSIT .+2=55 ! Deposit 55 next 000009C7: 55 $ DEPOSIT/LONG .=0C,0D,0E ! Deposit longwords 000009C8: 0000000C 0000000D 0000000E |
上記の例の一連の DEPOSIT コマンドは,DEPOSIT コマンドが現在の位置ポインタをどのように変更するかを示しています。/BYTE 修飾子を指定した後は,データはすべてバイト単位で格納され表示されます。これは /LONGWORD 修飾子によってシステムの省略時の設定が復元されるまで続きます。
#4 |
---|
$ BASE=%X200 ! Define a base address $ LIST=BASE+%X40 ! Define offset from base $ DEPOSIT/DECIMAL LIST=1,22,333,4444 00000240: 00000001 00000022 00000333 00004444 $ EXAMINE/HEX LIST:LIST+0C ! Display results in hex 00000240: 00000001 00000016 0000014D 0000115C |
割り当て文は,基底アドレスを 16 進数で定義しています。また,16 進数で指定した基底アドレスからのオフセットの位置に名前を与えています。 DEPOSIT コマンドは値のリストを読み込み,指定した位置から各値をロングワードに格納します。 EXAMINE コマンドは,これらの値を 16 進数で表示するよう要求しています。
目次 | 索引 |
|