English
FAQ開発環境SNASM環境
戻る進む
FAQ/開発環境

SNASM環境



ハングアップした後メモリの内容を残した状態でsnbugsatを再起動したい。

Q)
CartDev + Snbugsat を使用しています。
通常使用では問題がないのですが、プログラムの暴走などが原因でデバッガモニタ側と通信不能状態になってしまった場合、 モニターの再ロードをしなければならなくなり、暴走時のメモリの状態をチェックしたいのですが、モニタがロードされると アプリケーションが使用していたメモリがクリアされてしまいます。
メモリをクリアしないで、デバッガ機能を復帰させる方法はないのでしょうか?

A)
ありません。


SNASMでREAD/WRITEサイクルの条件設定やヒストリ機能などを使用したい。

Q)
SNBUGSATで、GUISHにある様な、"READ/WRITEサイクル"の条件設定や"データバスの値のサイズ"設定等の様なことは、可能でしょうか?
また、ヒストリー機能追加等、バージョンアップのご予定等もあれば教えてください。

A)
GUI-SHの場合、使用しているCPUがEVAチップ(デバッグ機能付き)であるため、 READ/WRITEサイクル条件などが可能でしたが、SNASM2の動作環境ではできません。
単純な条件設定(ICEなどと比べて)であれば可能です。(何回目でブレークなど)
ヒストリー機能などと同様でできません。
もし、このようなデバッグが行いたい場合は、ProgrammingBoxとROM Debugger(ソフィアシステムズ製)の組み合わせで可能です。
1セット約80万円弱かかりますが(ソフト込み)、SH-Cの出力フォーマット(SYSROFフォーマット)もGNU-Cの出力フォーマット(COFF形式)も読むことができます。
ソフトの不具合も改善されているようです。


SNASMにRAMの中身をcoffファイル等に落すような機能はありますか?

Q)
SNASM2のデバッガーを使用し、ワークRAM中に記録されているBG・MAP等のデータを、任意アドレス・バイト数を指定し、リンカーに使用できるファイル形式に出力する方法はあるでしょうか? 
また、デバッガー使用方法についての詳細な翻訳資料はありますか?

A)
SNBUGSATの機能にはありません。(但しバイナリのロード/セーブだけであれば、可能です)
マニュアルはSNASM2.09yの英語版の翻訳をテキストファイルとWindows用Microsoft Wordのファイルとして技術情報フォーラムのデータライブラリに提供しています。


SNASM環境でのSIMMアドレスの見方を教えて。

Q)
SNASM2からみて、CartDevのSIMMアドレスがProgramming Boxと同じ番地(0x04000000)からには存在していないように見えます。
snbugsat.exeのAlt+W(Window), M(Memory)にて当該番地をのぞいて見たところ、'**'が表示されてしまい、アクティブでは無いようです。
実際の所簡易SIMMシステムはCartDev + DevSaturnの環境で使えるのでしょうか?

A)
CartDev + DevSaturnの環境でも同様に0x04000000番地(キャッシュスルーアドレスだと0x24000000番地)にSIMMがアサインされます。
具体的な方法としては、SNBUG.CFGファイルにメモリ空間のアクセス権を与えます。

[SAT_SH2_MAIN]
Read      = 0x00000000, 0x0007FFFF, BYTE
Write     = 0x00100000, 0x0010001F, BYTE
Read      = 0x00100020, 0x0010005F, BYTE
Write     = 0x00180000, 0x0018FFFF, BYTE
ReadWrite = 0x00200000, 0x002FFFFF, BYTE
ReadWrite = 0x01000000, 0x01000003, BYTE
ReadWrite = 0x01800000, 0x01800003, BYTE
ReadWrite = 0x04000000, 0x04FFFFFF, BYTE ←この2行
ReadWrite = 0x24000000, 0x24FFFFFF, BYTE ←

[SAT_SH2_SUB]
Read      = 0x00000000, 0x0007FFFF, BYTE
Write     = 0x00100000, 0x0010001F, BYTE
Read      = 0x00100020, 0x0010005F, BYTE
Read      = 0x00180000, 0x0018FFFF, BYTE
ReadWrite = 0x00200000, 0x002FFFFF, BYTE
ReadWrite = 0x01000000, 0x01000003, BYTE
ReadWrite = 0x01800000, 0x01800003, BYTE
ReadWrite = 0x04000000, 0x04FFFFFF, BYTE ←この2行
ReadWrite = 0x24000000, 0x24FFFFFF, BYTE ←

の2行を加えます。

この領域がSIMMメモリにアサインされていますので、ここに必要なデータをバイナリロードすることで利用可能になります。
CartDev環境での、SIMMからのブート及びメモリアドレスの変更はできません。
又、モデム等の場合も同様でSNASMの禁止領域にアクセスするようなアプリケーションやデバイスのアドレスをこの設定ファイルで読み込み/書き込み許可をする事で可能になります。


SNASMでのデバッグの仕方は?

Q)
SNASM2の環境で開発をしています。このデバッガを使って変数の内容を表示させるにはどうすればいいのでしょう?
なお、ソースコードを表示してのデバッグ(ステップトレース等)は問題なく出来ています。
コンパイル時のオプションは、

 -Wall -O2 -m2 -g (と、include directory の指定)

です。

A)
手順

  1. プログラムを実行します。

  2. "Mixed"コマンドで変数を登録したソースファイルを開きます。

  3. ブレークポイントを設定し、プログラムを停止させます。

  4. グローバル変数を見たい時は"watch"コマンド、ローカル変数の時は、
     "local var"コマンドを使用します。

  5. "watch"の場合、"Edit"→"add"コマンドを使用して、変数の値を表示させます。
    (構造体の場合は"+"のついた項目をダブルクリックすることにより、詳しい情報が参照できます)

  6. "local var"の場合、ローカル変数に設定したメモリの値が、自動的に表示されます。

なお両ウインドウとも変数の値は参照できますが直接書き換えはできません。
"Memory"ウインドウにて書き換え下さるようお願いいたします。


SNASMで構造体の中が見えない。

Q)
SNASMでwatch は使えるのですが、構造体の中身が表示されません。
代わりでしょうか?

A)
これは、SNASMがアセンブラでの開発を前提とした開発環境に依存するものなのですが、snasmldでは、リンク時に構造体の内部シンボルや、自動変数のシンボルをデバグ情報として取り込みません。
従って、構造体の内部メンバのシンボルを参照したい場合や、Auto変数を表示するようなソースコードデバッグを行ないたい場合(それ以外の場合でもできるだけ)snasmldをリンカとしてお使いになるのはお止めください。
これらのことは、GNU ldを使えば全て出来ることです。


戻る進む
FAQ開発環境SNASM環境
Copyright SEGA ENTERPRISES, LTD,. 1997