을 사용하여 임베디드 8051 코어 용 레거시 코드 ()를 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
에있는 컴파일러를 배신하는 것 같은 느낌, 그리고 타이밍을 바꿀 것입니다.
이 질문을 게시하고 응답 한 지 1 년이 넘은 downvote는 민주적으로 매우 훌륭하지만 아직도 내가 할 수있는 일이 무엇인지 알고 싶습니다. 그래서 저는 의견을 읽고 싶습니다. –