AVR GCC&IAR

Reply to
Maxim Polyanskiy
Loading thread data ...
Reply to
Maxim Polyanskiy
Reply to
Unrau Alexander
Reply to
Maxim Polyanskiy
Reply to
Maxim Polyanskiy
Reply to
Maxim Polyanskiy
Reply to
Maxim Polyanskiy
Reply to
Maxim Polyanskiy
Reply to
Maxim Polyanskiy
Reply to
Alexander Derazhne

Всем привет!

Alexey Krasnov писал к Unrau Alexander Wed, 14 Jan 2004 14:36:19 +0000 (UTC):

AK> IAR кстати тоже не безгрешен. Пару раз вызов функции пропустил (полдня AK> искал ошибку).

Можно примерчик, когда проявляется такая ошибка?

AK> С оптимизацией тоже не все гладко - компилятор очень любит выносить AK> одинаковые куски кода (порой, состоящие из пары команд и ret) в AK> подпрограммы даже на самом высоком уровне оптимизации _по_ _скорости_, AK> что выглядит, мягко говоря нелогично. Версия 2.28A.

Галка у "Always do cross call optimization" стоит? Ну и чего ты от него хочешь, если сам его попросил это делать?

Reply to
Askold Volkov
Reply to
Alexander Torres

Hello Igor,

IU> А в целом я хочy сказать, что твои опасения по-поводy овеpхеда пpиyвеличины. IU> Для меня этот аpгyмент являлся так же самым веским. Hо опасения были pазвеяны IU> после начала писания на Си и pазбоpа полyченного кода. Комниляция весьма IU> "yмная". Безyсловно не во всех слyчаях, но идеала не бывает. Мне пеpеход на Си IU> дался весьма сложно, во многом из-за опыта писания на ассемблеpе и знания IU> Паскаля. Hо где-то недели чеpез тpи-четыpе я понял, что этот шаг, пеpеход на IU> Си, был сделан совеpшенно пpавильно.

Следующий шаг - освоение RTOS :) Тоже много чего облегчает.

Reply to
Andy Mozzhevilov

Привет, 15 января 2004 г., 7:44:37, ты писал(а):

AK>> IAR кстати тоже не безгрешен. Пару раз вызов функции AK>> пропустил (полдня AK>> искал ошибку). AV> Можно примерчик, когда проявляется такая ошибка?

Если б я смог воспроизвести ее в простом примере. Исправил и забыл.

AK>> С оптимизацией тоже не все гладко - компилятор очень любит AK>> выносить AK>> одинаковые куски кода (порой, состоящие из пары команд и AK>> ret) в AK>> подпрограммы даже на самом высоком уровне оптимизации _по_ AK>> _скорости_, AK>> что выглядит, мягко говоря нелогично. Версия 2.28A. AV> Галка у "Always do cross call optimization" стоит? Ну и чего ты от него AV> хочешь, если сам его попросил это делать

О! Помогло, большое спасибо!

Всего хорошего.

Reply to
Alexey Krasnov
14-Jan-04 15:23 Dima Orlov wrote to Alexei Zaiko:

DO> Значит этот кусок пишется на встроенном или внешнем асме, какие проблемы? DO> Я как DO> раз и предостерегаю от крайностей - или все асм или все 100% портабельный DO> С.

Так отож. Работа непосредственно с периферией (тут уже умное слово HAL пролетало :-) может быть и на асме выписана, если очень надо. А остальное.... Тут я компиляторы гонял - размер кода интересовал. Так из-под Keil-овый исходник путём добавления в начале всего лишь

#define idata #define code flash // или другое нужное по вкусу typedef unsigned char bit;

скомпилировался без ошибок и предупреждений

IAR 1.40 для mega103 avr-gcc для mega128 mspgcc для msp430f147 mcc18 для pic18fxx20

При этом исходник не планировался быть портабельным, если бы планировался, то у него в compatib.h было бы typedef bit bool; дабы на MCS51 не завязываться и везде по исходнику было бы bool вместо bit.

Просто это "верхний" уровень, логика работы устройства, подсчёт чего надо, обмен через радиомодем, печать... Вот оно и писалось на С (а не на C51, AVR-C и т.д.).

Да, объём скомпилированного кода в зависимости от кристалла и опций болтался от 9.7 до 14K, в исходнике под 2700 "плотных" строк. "плотных" - имеются ввиду мои предпочтения писать if () { // ... ... // ... } else { ... // ... }

а не // ... if () { // ... ... } else { // ... ... }

wbr,

Reply to
Oleksandr Redchuk

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.