Small Device C Compiler
| Тип | Крос-компілятор з мови C |
|---|---|
| Автор | Sandeep Dutta |
| Розробник | Sandeep Dutta та інші[1] |
| Стабільний випуск | 3.6.0 (12 червня 2016) |
| Версії | 4.5.0 (28 січня 2025)[2] |
| Платформа | Мікроконтролери |
| Операційна система | Linux, Windows, Mac OS X |
| Мова програмування | C, C++ |
| Ліцензія | GPL, GPL+LE |
| Стандарт(и) | ANSI C89, ISO C99, ISO C11[3] |
| Репозиторій | sf.net/p/sdcc/code/ |
| Вебсайт | sdcc.sourceforge.net |
Small Device C Compiler (SDCC) — вільний крос-компілятор мови програмування C. Підтримує низку 8-бітних мікроконтролерів і передбачає адаптацію (англ. retargeting) на інші аріхтектури. До складу пакету входять також асемблер, компонувальник, симулятор та зневаджувач. Більша частина компонентів пакету поширюється на умовах ліцензії GPL, бібліотека часу виконання — на умовах GPL+LE.
Особливості
Пакет SDCC має структуру, орієнтовану на «малі» 8-бітні системи з можливістю адаптації кодогенератора (back end) до нових типів мікроконтролерів. Компілятор відповідає стандартам ANSI C89, ISO C99, ISO C11 з деякими обмеженнями[4].C99
Компілятор підтримує стандартні типи даних мови С — 8, 16, 32-бітові цілі числа та 32-бітові числа числа з рухомою комою. Для деяких архітектур підтримуються 64-бітові (8-байтові) цілі числа. Виконуються такі стандартні методи оптимізації, як усунення загальних підвиразів, згортання та поширення констант, видалення мертвого коду використання таблиць переходів для реалізації інструкції switch.
SDCC підтримує такі можливості Embedded C, як іменовані простори адрес та арифметику з фіксованою комою[4].
З метою ефективного використання апаратних можливостей мікроконтролерів додано розширення мови програмування. Серед них — можливість опису С-функції як обробника апаратних переривань, 1-бітовий тип даних bit для логічних змінних, специфічні методи оптимізації на зразок глобального розподілення регістрів процесора (англ. global register allocation). Також є можливість гнучкого використання вбудованого асемблера.
Цільові платформи
Компілятор SDCC підтримує розробку вбудованого програмного забезпечення для систем, побудованих на таких мікроконтролерах:[3]
- Intel MCS-51 та сумісні з ним;
- Maxim Integrated (раніше Dallas Semiconductor) DS80C390;
- Freescale (раніше Motorola) 68HC08, 68HCS08;
- Zilog Z80 та його варіації (Z80, Z180, Rabbit 2000/3000, Toshiba TLCS-90);
- STMicroelectronics STM8.
Підтримка мікроконтролерів Microchip PIC16 та PIC18 знаходиться у стадії розробки.
Середовища розробки
Робота з пакетом SDCC вбудована у інтегроване середовище Code::Blocks[5]. Для середовища Eclipse/CDT існує плагін для роботи з SDCC[6]. Деякі виробники мікроконтролерів забезпечують підтримку SDCC у своїх пропрієтарних середовищах розробки.
Див. також
Примітки
- ↑ Who is SDCC? — перелік розробників. SDCC team. Архів оригіналу за 25 лютого 2021. Процитовано 24.07.2016.
- ↑ [Sdcc-user SDCC 4.5.0 released]
- ↑ а б What is SDCC?. SDCC team. Архів оригіналу за 30.04.2019. Процитовано 24.07.2016.
{{cite web}}: Не збігається часова мітка у|archive-date=/|archive-url=; можливо, 2019-04-30? (довідка) - ↑ а б Standard compliance. SDCC wiki. Архів оригіналу за 05.10.2016. Процитовано 30.07.2016.
{{cite web}}: Не збігається часова мітка у|archive-date=/|archive-url=; можливо, 2016-10-05? (довідка) [Архівовано 2016-10-05 у Wayback Machine.] - ↑ Feature List. Code::Blocks wiki. Архів оригіналу за 11 серпня 2016. Процитовано 30 липня 2016.
- ↑ eclipseSDCC. SourceForge.net. Архів оригіналу за 4 жовтня 2016. Процитовано 24.07.2016.
Посилання
- Small Device C Compiler на SourceForge.net
- SDCC wiki (англ.)
- Integrating SDCC 8051 tools into the Silicon Labs IDE [Інтегрування програм пакету SDCC у середовище Silicon Labs] (PDF) (англ.) . Silicon Labs. 2005. Архів оригіналу (PDF) за 21 червня 2013. Процитовано 30 липня 2016.
- Using the Free SDCC C Compiler to Develop Firmware for the DS89C430/450 Family of Microcontrollers [Використання вільного C-компліятора SDCC для розробки програмного забезпечення мікроконтролерів DS89C430/450] (PDF) (англ.) . Maxim Integrated. 2005. Архів оригіналу (PDF) за 8 лютого 2019. Процитовано 30 липня 2016.