インラインアセンブラでのセクションアドレス指定

HEWでプロジェクトを作成後、
2行追加しただけのプログラムです。

1行目はOKなのに、
2行目で
A2247 (E) ')' is missing 'vector'
と出ます。

なぜエラーが出るのでしょうか?

void main(void)
{
  asm(\”MOV.W:G #(topof program)\,A0\”);
  asm(\”MOV.W:G #(topof vector)\,A0\”);
}
  • wagashi5638様、

    お問い合わせありがとうございます。
    スタッフのおかぴーです。

     topof演算子を使用する場合、当該セクションの宣言が
    同一ファイル内に存在する必要があります。下の例のように
    main関数の直前でvectorセクションの宣言を行ない、その直後で、programセクションの宣言を行ってください。

    asm(”.SECTION vector\,ROMDATA\,align”);
    asm(”.SECTION program\,CODE\,align”);

    void main(void)
    {
    asm(”MOV.W:G #(topof program)\,A0”);
    asm(”MOV.W:G #(topof vector)\,A0”);
    }
  • おかぴー様

    同ファイル内でないとだめだろうとは思っていましたが、
    #pragma section vector
    としていました。
    なるほど、.SECTIONですか。
    ありがとうございました。