SDCC 4.6.0 공개, C2y 기능과 Rabbit 4000 포트 추가
- 2026년 6월 22일 SDCC 4.6.0이 나왔고, C2y의 _Countof 연산자, if 선언, 비트 정밀 정수형, umaxabs, containerof와 C23 constexpr, 가변 인자 함수 지원이 들어갔으며 GNU/Linux amd64, Windows x86과 amd64, macOS amd64용 소스와 바이너리를 내려받을 수 있음.
- Rabbit 4000용 r4k 포트가 정식으로 추가되고 Rabbit 5000과 6000용 r5k, r6k와 f8l 포트는 실험 단계이며, ez80 포트가 기존 ez80_z80 포트를 대체하고 z80 계열 코드 생성이 크게 개선됨.
- 지원 타깃은 8051 계열, DS80C390, HC08과 S08, Z80 계열(Z80N, Z180, SM83, Rabbit 2000/3000/4000, TLCS-90, eZ80, R800), Padauk, STM8, MOS 6502, WDC 65C02이고 PIC16과 PIC18은 관리가 중단된 상태이며, Rabbit 포트에는 1MB 데이터 주소 공간을 쓰는 __far 지원이 더해짐.
- SDCC는 1999년 12월 SourceForge로 옮겨 사용자가 개발자로 참여하는 구조가 됐고, ASXXXX 기반 어셈블러와 링커 sdas/sdld, GCC cpp 기반 sdcpp, 시뮬레이터 ucsim, 디버거 sdcdb, GNU Binutils에서 파생한 sdbinutils 등 라이선스가 다른 여러 구성 요소를 묶은 모음임.
- Microchip이 PIC 기기용 헤더 파일에 정품 기기 전용이라는 문구를 요구해서 해당 라이브러리가 GPL과 충돌하며, 2025년 10월 15일에는 SDCC가 후원을 받았다는 소식이 사이트에 올라옴.
Hacker News opinions
이 페이지 보고 Dallas Semiconductor를 처음 알았음. 실리콘 프레리 역사가 재밌더라.
8051용 오픈소스 컴파일러 중에는 SDCC가 최고임. 버그는 지옥같이 많지만 공짜라는 게 크고, 그걸로 충분할 때도 있음.
장난감 프로젝트에만 써서 완전히 깨진 버그는 못 만났는데, 확실히 성격이 괴상하긴 함.
어제 마침 8051용 C 컴파일러를 LLM한테 만들어달라고 했는데, SDCC 출력이 최적화가 안 돼서였음. 1시간 반 만에 프로젝트를 제대로 컴파일했고 크기는 SDCC 결과의 60%였음. 쿼터 두어 번 리셋하고 나니 SDCC 테스트 스위트도 통과하고 소프트 플로트까지 최적화하더라. github.com/jyaif/cc51
예전에 8051 상용 프로젝트에 SDCC를 썼는데, C 코드 쓰는 시간보다 어셈블리를 읽으면서 우회책 찾는 시간이 더 길었던 기억임. 반대로 z80 계열에서는 훌륭함. 최근 게임보이용 C를 꽤 많이 썼는데 컴파일러 버그를 하나도 못 만나서 평가가 확 올라감.
8051이랑 STM8에서는 나한테 충분히 잘 돌아갔음.
여러 MCU에 SDCC가 좋은 자원인데 PIC10, PIC12 같은 8비트 PIC 지원이 있었으면 좋겠음. 언젠가 나오겠지.
SDCC가 아니어도 Mikroe 컴파일러가 그것들을 지원함. C, BASIC, Pascal 다 있음.
Microchip XC 컴파일러도 지원함. 최근에 라이선스 요구를 없애서 FOSS는 아니지만 제한 없는 무료가 됨.
25년쯤 전에 십대 때 PIC16에 썼던 기억이 좋음. 어셈블리 쓰는 것보다 훨씬 나았는데 부모님이 PICSTART Plus는 사주고 Hitech-C 라이선스는 안 사주셨음.
나는 8051에 SDCC를 쓰는데, 요즘 LLM으로 짤 때는 프로그램 전체를 어셈블리로 쓰게 하든 C로 쓰게 하든 별 차이가 없는 것 같음.