2017-01-16 69 views
-1

我有嵌入式8051內核(在cypress FX2中)的遺留代碼,使用與其他版本的SDCC編譯。然而,目前的SDCC不知道_naked預選賽:`_naked`:嘗試使用SDCC編譯遺留8051(FX2)代碼,較新版本絆倒

delay.c:27: syntax error: token -> '_naked' ; column 21 

通過

static void 
udelay1 (void) _naked 
{ 
    _asm    ; lcall that got us here took 4 bus cycles 
    ret   ; 4 bus cycles 
    _endasm; 
} 

和其他事故引起的。

因爲_naked實際上應該是告訴C編譯器「不知道,你忽略了你是一個C編譯器,並明白你需要保存幀上下文」的事實,我不覺得我應該只是#define它。

有沒有解決這個問題的方法?我應該繼續並在使用_naked函數的地方手動內聯彙編程序嗎?我覺得我會在那裏背叛編譯器CALL,這會改變時間。

+0

在發帖和回答這個問題一年多後,downvote是民主的非常好,但我仍然想知道我可以做得更好,所以我很樂意閱讀評論。 –

回答

0

_naked在更新版本的SDCC中被替換爲__naked。同樣適用於asm/__asmat/__atinterruptbitxdata/__…

所以,這原來是一個正則表達式替換練習。

我仍然有鏈接器/ ranlib /主要是ar的問題,CMake忽略我指示它用作編譯器,但哦。