`_naked`: Попытка скомпилировать устаревший код 8051 (FX2) с помощью 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: "Нет, не обращайте внимания на тот факт, что вы являетесь компилятором C, и понимаете, что вам нужно сохранить контекст фрейма", я не думаю, что мне следует просто #define
это прочь
Есть ли какое-то решение этого? Должен ли я просто продолжить и вручную вставить ассемблер везде, где _naked
функция используется? Я чувствую, что я бы предал компилятор на CALL
там, и это изменило бы время.
1 ответ
_naked
был заменен __naked
в более новых версиях SDCC. То же относится и к asm
/__asm
, at
/__at
, interrupt
,bit
,xdata
/__…
,
Таким образом, это оказалось упражнением в заменах регулярных выражений.
У меня все еще есть линкер / ranlib / в основном ar
проблемы, и CMake игнорирует то, что я приказываю использовать в качестве компиляторов, ну да ладно.