参考ファイル）                         1998.5.19ソフトウェア技術開発部

KATANA開発環境用（SET4 SDK pre-release2）に記載したドキュメントです。
参考にしてください。記載されているディレクトリやファイルは、全て
SET4 SDK pre-release2に収録されている名称です。ご注意願います。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
＜日立製ツール導入マニュアル＞
1998.4.14 セガ・エンタープライゼス

０．必要な設定
  次に示すDOSの環境変数の設定が必要です。
    PATH, SHC_LIB, SHC_TMP, SHC_INC, HLNK_LIBRARY1
  これらの環境変数の設定用バッチファイルを用意しました。
      'KATANA\BIN\SET_KT.BAT'
  このバッチファイルを実行するか、同様の処理を AUTOEXEC.BAT 内で行うように
  して下さい。
  使用例：
	  KATANA環境を、D:\SEGA_DEVフォルダにコピーした場合の例：
	       SET_KT D:\SEGA_DEV\KATANA[ENTER]
	  上記例の様に、SET_KTバッチを実行して下さい。

  注意点：
    環境変数の記憶容量が足りないというエラーが発生する場合は、DOSプロンプト
    のプロパティを開き、メモリ設定の中の環境変数の初期サイズ設定を大きくして
    下さい。そしてDOSプロンプトを再起動して下さい。

  なお、本開発ツールに付属のMAKEFILEは、マイクロソフト社のNAMKE.EXE 用です。
  NMAKE.EXE は、VC++開発キットに含まれているものをご使用下さい。
  標準インストール状態では、"C:\Program Files\DevStudio\VC\bin\NMAKE.EXE"
  にあります。


１．SHC必須オプション(変更禁止)
  -cpu=sh4
  -division=cpu  ← *1
  -endian=little
  -pic=0
  -macsave=0     ← *2
  -string=const
  -comment=nonest
  -DEF=__SET4__  ← * SET4 環境のみ
  -extra=a=400   ← *3
  -fpu=single    ← *4  shc ver5.0 rel28以降を使用時のみ。
  -double=float  ← *4  shc ver5.0 rel10までを使用時のみ。

*4 shcのバージョンにより、-fpuオプションと-doubleオプションとに
   異なりますので、ご注意下さい。
*1 SHC のマニュアルによると、cpu指定が SH2 以外の時に、
   -division に対して  peripheral  又は nomask を指定した場合、
   実行できないと記述されています。
   よって、本プロジェクトでは、
    -division=cpu
   とする必要があります。
  ( -division 指定をしない時のデフォルトも cpuですが、明確にして
   おいた方が良いと判断しました。)
*2  関数呼び出し時、呼び出された関数側での mach,maclレジスタの保存は
    保証しません。
    アセンブラからＣの関数を呼び出す際には、呼び出し側で保存する必要が
    あります。
    セガが提供するライブラリは、全て MACSAVE=0のオプションで作成しています
    ので、アプリケーション側でも必ず指定して下さい。
    (省略した場合に、MACSAVE=1 がデフォルトの為、動作保証できません)
*3  暫定対策オプションの為、最終的には必要無くなりますが、当面はこの
    オプションを外さないで下さい。


２．ASMSH必須オプション(変更禁止)
  -endian=little
  -cpu=sh4



３．実行ファイル作成時のデバッグ情報の出力方法
	CodeScapeデバッガにてソースコードデバッグを行う為には、実行ファイルを
	デバッグ情報付きで生成する必要が有ります。
	ここではその方法について説明します。
3-1.全体の流れ
	Ｃソース(ただし、インラインアセンブル使用時は、後述の制限事項を参照の事)
		↓ SHC.EXE
	デバッグ情報付き SYSROFファイル    アセンブラソース
		↓ DWFCNV.EXE                     ↓ ASMSH.EXE
	デバッグ情報無し SYSROFファイル、DWF情報ファイル
		↓ LNK.EXE
	デバッグ情報付き ELFファイル(ELF/DWARF)



	SHC 注意点
    ・SH4用の 標準ライブラリ(sh4nlfzz.lib)をリンクして下さい。
      環境変数SET HLNK_LIBRARY1に設定しておけば、リンカがデフォルトで
      このライブラリファイルを検索するようになります。
      (例)
        SET HLNK_LIBRARY1=C:\KATANA\SHC\LIB\SH4NLFZZ.LIB
      なお、先述の SET_KT.BAT では、この設定も行います。
    ・ソース内でインラインアセンブラを使用した場合、ASMSH用アセンブラソースの
      出力しか出来ません。(SHC 仕様)
      → インラインアセンブルソースを SHCでコンパイルする際に DEBUGオプション
         を付けると、SHCが出力するアセンブラソース内に Cソースとの対応情報が
         埋め込まれます。
         更にこのアセンブラソールを ASMSHにて DEBUG=DWARFオプション付きで
         アセンブルすると、デバッガ上にて Cソースの参照程度は可能になります。
	LNK Ver.6.0('98.03.24) 注意点
    ・デバッグ情報付きのELF実行ファイルを出力する為には、オブジェクトと
      同時にDWF情報ファイルを入力する必要があります。
      (この時、デバッグ情報付きのSYSROFファイルは入力できません。)
      SHCの出力オブジェクト：
          SHCに、-DEBUG というオプションを指定し、デバッグ情報付きの
          SYSROFオブジェクトを生成します。
          次にDWFCNV.EXE を使用し、デバッグ情報付きのSYSROFから、
          デバッグ情報無しのSYSROFとDWF情報ファイルを生成します。
      ASMSHの出力オブジェクト：
          ASMSHに、-DEBUG=DWARF というオプションを指定する事で、
          デバッグ情報無しのSYSROFとDWF情報ファイルを生成します。

3-2.ELF形式の実行オブジェクト(デバッグ情報無し)の出力方法
    リンカに対し、-ELF オプションを指定し、-DEBUGオプションを外して下さい。

3-3.ELF-DWF形式の実行オブジェクト(デバッグ情報付き)の出力方法
    ・コンパイラに、-DEBUG オプションを指定し、
      'デバッグ情報付きリロケータブルSYSROFオブジェクト(OBJ)'
      を出力して下さい。
      その後、DWFCNV.EXE を使用して下さい。
        (例)  DWFCNV -SYSROF=<出力ファイル名> <入力ファイル名>[ENTER]
        → 'デバッグ情報無しSYSROFオブジェクト'と、
           'DWF形式デバッグ情報(DWF)'
          が出力されます。
    ・アセンブラに、-DEBUG=D オプションを指定して下さい。
        → 'デバッグ情報無しSYSROFオブジェクト'と、
           'DWF形式デバッグ情報(DWF)'
          が出力されます。
    ・リンカに、-ELF -DEBUG オプションを指定して下さい。
      この時、DWFファイルを明示的に指定する必要はありません。
      (例)  LNK -DEBUG -ELF -SUB=OBJLIST.SUB[ENTER]

3-4.具体例  ( main.c , asm.src を元に、実行ファイル(elf)を作成する場合）
	SHC -DEBUG -SUB=SHC.SUB  main.c     (*)SHC.SUB には必須オプション等を定義
	ASMSH asm.src -DEBUG=D -SUB=ASMSH.SUB (*)ASMSH.SUB には必須オプションを定義
	DWFCNV -SYSROF=main.ob main.obj
	LNK -sub=lnk.sub

<lnk.sub>の内容(例)
elf
debug     ;ソースコードデバッグしない場合、必要無し。(リンクが早くなります)
input start.obj
input $(OBJ_DIR)\main.ob
input $(OBJ_DIR)\asm.obj
library $(SHINOBI_LIB_DIR)\ninja.lib
library $(SHINOBI_LIB_DIR)\shinobi.lib
;library $(SHC_DIR)\shcenlf.lib  ;環境変数 HLNK_LIBRARY1 で指定する方法を推奨
output foo.elf
print  foo.map   ;拡張子.map は、省略可能です。
start P,C,D,B(8c010000)
exit



以上。


補足　Q&A
0.日立環境を始めて使用する方、SHCがうまく動作しない方へ、
  →SHC が正常に起動しない場合の原因は、必要な環境変数が正しく設定されて
    いない場合が、ほとんどです。
    KATANA\BIN フォルダにある SET_KT.BAT を使用し、環境変数の設定を
    正しく行って下さい。
    もしも環境変数の記憶容量が足りないエラーが出る場合は、DOSプロンプトの
    プロパティを開き、メモリ設定の中の環境変数の初期サイズを大きくして
    DOSプロンプトを再起動して下さい。

1.CodeScapeで、elfを読み込んだ際、自動的にPCを実行開始アドレスにするには？
  →日立リンカのENTRYオプションを使用します。
    (デフォルトでは、実行開始アドレスは「Pセクションの先頭」に設定されます)
    現在のSHINOBIの付属サンプルの場合、
    	ENTRY _START_SYS
    と指定する必要があります。
    この設定では、グローバルシンボルの「_START_SYS」が実行開始アドレスと
    なります。

2.リンク時に、LCTファイルが見つからないというエラーが発生する原因は？
  →これは、日立ライブラリアン(LBR)が、DWF情報に対応した副作用です。
    DWF情報付きでライブラリファイル(*.LIB)を作成した際、拡張子が.LCTの
    ファイルも同時に生成されているはずです。
    ライブラリ生成時にデバッグ情報を持たせた場合は、同時に出力される、
    拡張子.LCTというファイルを、ライブラリファイルと同一フォルダにコピー
    する必要があります。
    ライブラリアンは、オブジェクトファイルと同一フォルダに.DWFファイルが
    存在すると、ライブラリファイルをデバッグ情報付きで作成します。
    ライブラリにデバッグ情報を持たせたく無い場合には、ライブラリアンに対し
    DWFファイルを入力させないで下さい。
    なお、デバッグ情報付きのライブラリと デバッグ情報無しのライブラリとは
    同時にリンク可能です。
    ちなみに SHC付属の標準ライブラリはデバッグ情報を持っていない為、
    LCTファイルは付属していません。


−以上−
