`_naked`:尝试使用SDCC编译遗留8051(FX2)代码,较新版本绊倒
问题描述:
我有嵌入式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
,这会改变时间。
答
_naked
在更新版本的SDCC中被替换为__naked
。同样适用于asm
/__asm
,at
/__at
,interrupt
,bit
,xdata
/__…
。
所以,这原来是一个正则表达式替换练习。
我仍然有链接器/ ranlib /主要是ar
的问题,CMake忽略我指示它用作编译器,但哦。
在发帖和回答这个问题一年多后,downvote是*的非常好,但我仍然想知道我可以做得更好,所以我很乐意阅读评论。 –