3
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的绝对地址。可能类似于内置函数或宏。