設備: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的絕對地址?也許像內置函數或宏一樣。
請注意,編譯器手冊說:
的MPLAB XC16 C編譯器完全支持函數指針,它 允許函數間接調用。函數指針始終是16位寬的 。
我已經發布了同樣的問題在
請澄清,因爲你已經多次被問過,.s文件中的東西是真的代碼還是數據;請定義'功能不正確';並請繼續在這裏的整個對話而不是回到electronics.stackexchange.com它來自哪裏。否則,我根本看不到你在這裏發佈的觀點。 – EJP