Microchip XC16の関数の絶対アドレス
デバイス:dsPIC33FJ128GP802 次のようにいくつかの* .sファイルがあります .global _D1 .section .speex, code _D1: .pword 0x66C821, 0x1B0090, 0xD96C36, 0x9B60B0, 0xDD4E36, 0xBF4E53 .pword 0xD1098B, 0x719BD9, 0x873989, 0x003B69, 0x279035, 0xED4244 .pword 0xE1403C, 0x54D439, 0x826550, 0xC59627, 0xDD0432, 0x88FA29 同じことを* .hで宣言しました extern void D1(void); 今、私はD1をテーブル読み取り関数に渡します nowPlaying.file1 = (unsigned long) D1; function(nowPlaying.file1); 私の問題は、D1のアドレスが0X8000より大きい場合、ルーチンが正しくないことです。大小のコードモデルを試しましたが、結果は同じです。これはポインタの16ビット制限によるものだと思います。コードからD1の絶対アドレスに直接アクセスする方法はありますか。組み込み関数やマクロのようなものかもしれません。