Everything
8.2.3 プロジェクト間の情報の受け渡し

マルチコア用のプログラムを,1つのブート・ローダ・プロジェクトと複数のアプリケーション・プロジェクトに分けて構成する場合,ブート・ローダ・プログラムからアプリケーション・プログラムの情報を参照するために,最適化リンカの-fsymbolオプションを使用します。

最適化リンカに-fsymbolオプションを指定してアプリケーション・プロジェクトをリンクすると,オプションに指定したセクション内に存在するpublicラベルの名前とアドレス値を,シンボル・アドレス・ファイル(.fsyファイル)に出力します。各アプリケーション・プロジェクトから出力したシンボル・アドレス・ファイルをブート・ローダ・プロジェクトの入力とすることで,情報の参照が可能になります。

受け渡しの例を次に示します。

;; cstart.asm
    .section  ".text.cmn", text
    .public   __cstart_pm1       ; .fsy に出力するためにpublic指定する
__cstart_pm1:

 

アプリケーション・プロジェクトのリンク時に,-fsymbolオプションで__cstart_pm1ラベルの存在する.text.cmnセクションを指定します。この場合,pm1.fsyファイルを生成します。

> rlink cstart.obj -output=pm1.abs -fsymbol=.text.cmn

 

ブート・ローダ・プロジェクトで,アプリケーション・プロジェクト側のラベルを参照します。

;; boot.asm
    jr32     #__cstart_pm1

 

ブート・ローダ・プロジェクトのコンパイル時に,各アプリケーション・プロジェクトから生成した.fsyファイルを一緒に入力することで,.fsyファイル内のアドレス値でラベルの参照解決を行います。

> ccrh boot.asm pm1.fsy pm2.fsy -oboot.abs

注意

.fsyファイルに出力したラベルは,ブート・ローダ・プロジェクトでもpublicラベルの定義として扱います。このため,複数のアプリケーション・プロジェクトから同名のラベルを.fsyファイルに出力していたり,ブート・ローダ・プロジェクトで同名のラベルを定義していると,ブート・ローダ・プロジェクトのリンク時に多重定義エラーになります。