LINUX.ORG.RU

Выпуск Small Device C Compiler 3.5.0

 


1

2

24 июня было объявлено о выходе новой версии компилятора SDCC для 8-ми битных микроконтроллеров. Основные изменения по сравнению с предыдущей версией:

  • диалект языка по умолчанию сменён с --std-sdcc89 на --std-sdcc99;
  • сокращено потребление памяти (наиболее заметно при больших значениях --max-allocs-per-node);
  • уменьшено время компиляции для stm8 (наиболее заметно при больших значениях --max-allocs-per-node);
  • переработано и дополнено руководство пользователя;
  • функция atoll() для конвертирования строки в long long (доступно не для всех устройств, прим. переводчика);
  • соглашение о вызовах __z88dk_fastcall и __z88dk_callee для более эффективного вызова функций и большей совместимости с z88dk;
  • добавлена опция конфигурации сборки --disable-non-free;
  • опция --lospre-unsafe-read переименована в --allow-unsafe-read;
  • множество изменений и исправлений ошибок.

Текущая версия компилятора поддерживает архитектуры семейства MCS51 (8031, 8032, 8051, 8052 и другие), Dallas DS80C390, Freescale (Motorola) HC08 (hc08, s08), Zilog Z80 (Z80, Z180, gbz80, Rabbit 2000/3000, Rabbit 3000A) и STMicroelectronics STM8 . В разработке поддержка Microchip PIC и Toshiba TLCS-90.

Исходные коды, скомпилированные бинарные файлы для различных ОС и архитектур, а также документация доступны на sourceforge.

>>> Подробности

Ответ на: комментарий от unt1tled

В общем хуже. А лучше тем, что ты посмотри на список архитектур, поддерживаемых гцц и сдцц.

ramon13666 ★★★ ()
Ответ на: комментарий от Quasar

Закопать.

Что предлагаешь на замену для радиолюбителей? Из требований - DIP-корпус, минимальная цена и бесплатный компилятор под linux

German_1984 ★★ ()
Ответ на: комментарий от German_1984

Есть там заброшенная поддержка avr в начальной стадии. Такая, что её даже выкинули из сборки. Кст, авр как раз и есть замена 8-битным пикам согласно твоим критериям.

ramon13666 ★★★ ()
Ответ на: комментарий от vovan72

Так кто ж заставляет думать о его системе команд, когда пишешь на C? (Сам я с ними дела не имел и с восьмибитниками от Микрочипа связываться не хочу)

ramon13666 ★★★ ()
Ответ на: комментарий от ramon13666

кто ж заставляет думать о его системе команд, когда пишешь на C

Ну например чтобы знать какие операции атомарны, а какие нет.

pftBest ★★★★ ()
Ответ на: комментарий от German_1984

DIP-корпус

это уже и для любителей скорее минус. и LUTу пофиг под какой корпус дорожки.

минимальная цена

разница в цене для мелких небольше десятков рублей.

бесплатный компилятор под linux

есть avr-gcc но я его не пробовал. пики для мелких проектов там асм рулит. у авра для этого все есть. скорость больше пиков код плотнее система команд сказочная.

vovan72 ()
Ответ на: комментарий от ramon13666

Так кто ж заставляет думать о его системе команд, когда пишешь на C?

на шести и восьминогих на С особо не по пишешь. мало памяти.

(Сам я с ними дела не имел и с восьмибитниками от Микрочипа связываться не хочу)

а чо тогда других про ненависть спрашиваешь? попробуй и сам их возненавидешь как грек турков.

vovan72 ()
Ответ на: комментарий от vovan72

У меня нет ненависти к пикам, только жалость. Мне просто пофиг на них. Вот и интересуюсь, почему их не любят. И уж точно не защищаю.

ramon13666 ★★★ ()
Ответ на: комментарий от vovan72

DIP-корпус

это уже и для любителей скорее минус. и LUTу пофиг под какой корпус дорожки.

да ну подальше этот DIP. перешёл на smd компоненты и не жалею: сверлить не надо, LUT разводит всё на «ура», места вся эта ерунда занимает мало и не рассыпается - сидит себе в контейнерах. у готовой схемы наводки меньше, габариты меньше. детали с ножками оставил детям для квадратно-гнездовых схем. на китайской отладочной плате с лапшой из перемычек. PS. самый лучший LUT - это лимонная кислота и перекись водорода )))

hawai ()

использовал сабж для программирования STM8. намучался. компилятор начинался как любительская поделка и оттуда все болезни. достаточно взглянуть в хэндбук к нему, который рассказывает про хорошие практики программирования для данного компилятора. там есть перлы типа:

вот так написанный цикл будет распознан и оптимизирован:

for (i=0;i<10;i++) { ...

а вот так написанный - будет перекодирован в лоб и быстродействие уменьшится в разы

for (i=0;i<10;++i) { ...

быстродействие для 8-ми битников - это критично вообще-то. и там таких пунктов не один и не два. да и других проблем хватает. так что писал на нём, как на асме - не расслабиться, всё отслеживать руками. компилятор только для трансляции в асм, но не оптимизирует особо.

hawai ()
Последнее исправление: hawai (всего исправлений: 1)
Ответ на: комментарий от ramon13666

ramon13666> Кстати, откуда такая ненависть к пикам?

Это одна из немногих архиектур, которую наотрез отказываются поддерживать кроссплатформенными решениями по инициативе компании-разработчика.

Quasar ★★★★★ ()
Ответ на: комментарий от German_1984

German_1984> Что предлагаешь на замену для радиолюбителей? Из требований - DIP-корпус, минимальная цена и бесплатный компилятор под linux

Да тот же AVR. Ещё для MSP430 есть годные инструменты. А нормальных компиляторов C для PIC на линуксе отродясь и не было. А то, что есть - это какая-то полуподдержка васянская. Для серьёзной работы с PIC только Windows.

Quasar ★★★★★ ()
Ответ на: комментарий от hawai

А ещё у них peephole optimizer там недоделанный и недокументированный. Например, для stm8

GPIOB->ODR |=0x01;
развернётся в
bset #0x5010, 1
А конструкция
GPIOB->ODR |=0x02;
в
	ldw	x, #0x5010
	ld	a, (x)
	or	a, #0x02;
	ld	(x), a
Только свободных альтернатив для stm8 я не вижу. А Эди так уже целую пачку поделок с его помощью наклепал.

ramon13666 ★★★ ()
Ответ на: комментарий от vovan72

vovan72> на шести и восьминогих на С особо не по пишешь. мало памяти.

Подёргать ноги и сделать таймер с дёрганьем ног можно на чём угодно. И C тут ресурсов скушает не слишком много.

Quasar ★★★★★ ()
Ответ на: комментарий от German_1984

вброшу слехка. на замену старших пиков и авров можно попробовать миландровскую серию 1986. давно хочу купить парочку поковырять на досуге. цена конская но сопоставима с старшими аврами. зато патриотизм с духовными скрепами в комплекте.

и да. не уверен что с миландром можно нормально работать с линуха.

vovan72 ()
Ответ на: комментарий от ramon13666

да. ценник 400 ₽ за 64 и 700 ₽ за 144 ноги и нормальный кортекс очень даже ничего. главный вопрос в софте под онтопик.

vovan72 ()
Ответ на: комментарий от ramon13666

Поддержка средств разработки под PIC отбила у меня всякий интерес к продуктам Microchip, но из того, что мне известно, имеет смысл посмотреть в сторону PIC32, так как там MIPS, под который компиляторы есть. Ну и новый MPLAB есть под линукс, который этот самый PIC32 кое-как поддерживает.

С другой стороны, под те же ARM Cortex M есть огроменное количество хорошо отлаженных инструментов, так что я не буду особо заморачиваться, а пойду сразу на кортексы.

Quasar ★★★★★ ()
Ответ на: комментарий от vovan72

Странная аналогия в данном случае. Разрабатывать быстрее, писать проще, в кристалл помещается. При этом отпадает необходимость писать свои велосипеды (да, я знаю, что каждый ассемблерщик имеет их целую коллекцию). Для себя решил, что не буду связываться с асмом, если не будет большой необходимости.

ramon13666 ★★★ ()
Ответ на: комментарий от vovan72

на замену старших пиков и авров можно попробовать миландровскую серию 1986. давно хочу купить парочку поковырять на досуге. цена конская но сопоставима с старшими аврами. зато патриотизм с духовными скрепами в комплекте.

им на замену спокойно можно брать что-то на ARM M0+ ... M4+ и не морочить голову. благо дешёвых армов полно STM32, TI 432, Cypress, LPC1xxx etc. ног больше, частоты выше, периферия богаче, и программировать спокойно можно отуда угодно. та же Raspberry PI может работать как основной компьютер, где крутится codeblocks + gcc-arm и на своих GPIO делать SWD интерфейс для заливки порграммы (по-моему даже open ocd его уже начал поддерживать)

anonymous ()
Ответ на: комментарий от vovan72

на шести и восьминогих на С особо не по пишешь. мало памяти.

вполне напишешь, память вообще не помеха

next_time ★★★★★ ()

для 8-ми битных микроконтроллеров — 9.6 MB

«Таперича не то, что давеча»: антикварный 8-ми битный 8080: Pascal — 16KB, C — 17KB :)

quickquest ★★★★★ ()
Ответ на: комментарий от ramon13666

Есть там заброшенная поддержка avr в начальной стадии. Такая, что её даже выкинули из сборки.

Уносите нинужно обратно.

anonymous ()
Ответ на: комментарий от ilnnli

Кто пробовал с stm8? Полёт нормальный?

полёт дрянь, но других бесплатных свободных альтернатив нет. если будешь пользоваться, копируй ТОЛЬКО нужные функции из стандартной библиотеки STM в свои исходники. этот компилятор не умеет выбрасывать ненужный код во время линковки

hawai ()
Последнее исправление: hawai (всего исправлений: 1)
Ответ на: комментарий от vovan72

так я об этом же. не нужен С если памяти меньше 8кб.

Да ты что? Несколько лет использовал sdcc с atmel 8252/8253. Там оперативки - всего 256 байт (!!!), однако проги были совсем не крошечными, занимали все 12К флеша, и отлично писались на С, а не на асме.

anonymous ()
Ответ на: комментарий от ilnnli

Если желание поиграться, то дерзай. Если серьёзные дела делать, то ищи альтернативы. Как тебе выше сказали, линкер не умеет выкидывать ненужные функции, оптимизации практически никакой. Эдди делает с его помощью некоторые поделки, у него лучше спроси. https://sourceforge.net/p/stm8samples/code/ci/default/tree/

ramon13666 ★★★ ()
Ответ на: комментарий от reprimand

sdcc далеко до гцц. Там и людей меньше намного, но развитие идёт. Вчера попробовал релиз, по сравнению с 3.4.2 скорость компиляции действительно возросла (Хотя раньше это был просто ад. Как-то попробовал задать опцию --max-allocs-per-node 1000000, так он больше получаса ворочал мой hello_world на Pentium4). А вообще попробуй и отпишись о результатах

ramon13666 ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.