`_naked`:尝试用SDCC编译传统的8051(FX2)代码,更新的版本绊倒

时间:2017-01-16 13:14:16

标签: compatibility 8051 sdcc

我有一个嵌入式8051核心(在cypress FX2中)的遗留代码,使用与其他版本的SDCC一起编译。但是,目前的SDCC并不知道_naked限定词:

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编译器" nah,忽略你是C编译器的事实,并且理解你需要保存帧上下文&# 34;我不觉得我应该#define离开它。

这有什么解决方案吗?我是否应该继续使用_naked函数在哪里手动内联汇编程序?我觉得我在那里CALL背叛了编译器,这会改变时机。

1 个答案:

答案 0 :(得分:0)

在较新版本的SDCC中,{p> _naked__naked取代。同样适用于asm / __asmat / __atinterruptbitxdata / __…

所以,这被证明是正则表达式替换的练习。

我仍然遇到链接器/ ranlib /大多数ar问题,而且CMake忽略了我指示它用作编译器的内容,但是很好。