ユーザーインタフェースはメモリー内容の確認および設定用のコマンドを備えています。次の操作はユーザーインタフェースを使用して行います。
任意の仮想アドレスの読み取り、書き込み。
メモリー演算子を使用すると、任意のメモリー位置からの読み取り、任意のメモリー位置への書き込みが行えます。以降の例に示すメモリーアドレスはすべて仮想アドレスです。
8 ビット、16 ビット、32 ビットのさまざまな操作ができます。一般的に、c (文字) という接頭辞は 8 ビット (1 バイト) の操作を示し、w (ワード) という接頭辞は 16 ビット (2 バイト) の操作を示し、l (quadlet) という接頭辞は 32 ビット (4 バイト) の操作を示します。
l は、場合によっては、数字の 1 との混同を避けるために大文字で示すことがあります。
waddr 、qaddr、addr64 は境界の制約をもつアドレスを示します。たとえば、qaddr は 32 ビット (4 バイト) 境界を示し、したがってそのアドレス値は次の例に示すように 4 で割り切れなければなりません。
ok 4028 L@ ok 4029 L@ Memory address not aligned ok |
OpenBoot に実装されている Forth インタプリタはできるだけ ANS の Forth 標準に準拠しています。明示的に 16 ビットまたは 32 ビットを取り出す場合は、@ の代わりにそれぞれ w@ または L@を使用してください。そのほかのメモリーやデバイスレジスタへのアクセスコマンドもこの規則に従います。
表 4-5 にメモリーアクセス用のコマンドを示します。
表 4-5 メモリーアクセスコマンド
dump コマンドは特に便利です。このコマンドは、メモリーの領域をバイト値、ASCII 値の両方で表示します。次の例は、仮想アドレス 10000 からの 20 バイトを表示します。さらに、特定のメモリー位置に読み書きする方法も示しています。
(たとえば、@ を使用して) 無効なメモリー位置をアクセスしようとした場合は、処理はただちに終了し、PROM が Data Access Exception または Bus Error などのエラーメッセージを表示します。(注 : 数字は 16 進数で記述されています。)
表 4-6にメモリー割り当て用のコマンドを示します。
表 4-6 メモリー割り当てコマンド
次の画面は alloc-mem と free-mem の使用例です。
alloc-mem が 4000 バイトのメモリーを割り当てます。その予約領域の開始アドレス (ffef7a48) が表示されます。
dump が ffef7a48 から始まるメモリー 20 バイトの内容を表示します。
次に、このメモリー領域を値 55でみたします。(注 : ここで数字は 16 進数で記述されています。)
最後に、free-mem が割り当てられた ffef7a48 からの 4000 バイトのメモリーを返します。
ok ok 4000 alloc-mem . ffef7a48 ok ok ffef7a48 constant temp ok temp 20 dump 0 1 2 3 4 5 6 7 ¥/ 9 a b c d e f 01234567v9abcdef ffef7a40 00 00 f5 5f 00 00 40 08 ff ef c4 40 ff ef 03 c8 ..u_..@..oD@.o.H ffef7a50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ ffef7a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ ok temp 20 55 fill ok temp 20 dump 0 1 2 3 4 5 6 7 ¥/ 9 a b c d e f 01234567v9abcdef ffef7a40 00 00 f5 5f 00 00 40 08 55 55 55 55 55 55 55 55 ..u_..@.UUUUUUUU ffef7a50 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 UUUUUUUUUUUUUUUU ffef7a60 55 55 55 55 55 55 55 55 00 00 00 00 00 00 00 00 UUUUUUUU........ ok ok temp 4000 free-mem ok |
memmap の使用例を次に示します。
ok 200.0000 sbus 1000 memmap ( virt ) ok |