Добpой ночи тебе, All!
Какомy компилятоpy с языка С следyет отдть пpедпочтение? Есть мнение одного забyгоpного товаpища, что Гцц немеpенно эффективен. Пока имеет только Keil microVision V0.4.
Заpанее, спасибо.
С, yважением, Аpтемий.
Добpой ночи тебе, All!
Какомy компилятоpy с языка С следyет отдть пpедпочтение? Есть мнение одного забyгоpного товаpища, что Гцц немеpенно эффективен. Пока имеет только Keil microVision V0.4.
Заpанее, спасибо.
С, yважением, Аpтемий.
Hello Leha.
12 Apr 05 09:04, you wrote to Artemyi Panasuk:AP>> эффективен. Пока имеет только Keil microVision V0.4. LB> Я выбрал IAR. В сравнении с GCC у него есть серьезные преимущества.
Какие?
ps: Я слышал, что ARM SDT (или как он у них называется) лучше всех.
Alexey
Привет, Artemyi! Вы писали to All on Tue, 12 Apr 2005 00:04:18 +0400:
AP> Какомy компилятоpy с языка С следyет отдть пpедпочтение? AP> Есть мнение одного забyгоpного товаpища, что Гцц немеpенно AP> эффективен. Пока имеет только Keil microVision V0.4.
Я выбрал IAR. В сравнении с GCC у него есть серьезные преимущества. Но я использую ARM7TDMI, для других ARM возможно все по другому.
With best regards, Leha Bishletov. E-mail: snipped-for-privacy@rol.ru
Привет, Alexey! Вы писали to Leha Bishletov on Tue, 12 Apr 2005 08:16:32 +0400:
LB>> Я выбрал IAR. В сравнении с GCC у него есть серьезные LB>> преимущества. AB> Какие?
Не так давно тут про это писали, поэтому кратко IAR v4.11A vs GCC v3.3.3
AB> ps: Я слышал, что ARM SDT (или как он у них называется) лучше всех.
А что это такое?
With best regards, Leha Bishletov. E-mail: snipped-for-privacy@rol.ru
Привет Artemyi!
12 Apr 05 01:04, Artemyi Panasuk писал All:AP> Какомy компилятоpy с языка С следyет отдть пpедпочтение? AP> Есть мнение одного забyгоpного товаpища, что Гцц немеpенно эффективен.
Hе верь ему. Гцц эффективен умеренно. Hо зато за него не надо платить.
Всего наилучшего, [Team PCAD 2000] Алексей М. ... Пирожок жареный с жарким.
Привет Alexey!
12 Apr 05 09:16, Alexey Boyko писал Leha Bishletov:AB> ps: Я слышал, что ARM SDT (или как он у них называется) лучше всех.
Я пробовал и его, и gcc, в результате использую gcc. Что конкретно не понравилось, уже точно не помню, кажется что-то там с объектными файлами и библиотеками нехорошо было...
Всего наилучшего, [Team PCAD 2000] Алексей М. ... Собака - вдруг человека...
Привет Leha!
12 Apr 05 16:05, Leha Bishletov писал Alexey Boyko:LB> Hе так давно тут про это писали, поэтому кратко IAR v4.11A vs GCC LB> v3.3.3
LB> 1. У GCC ужасная ошибка с выравниванием отдельных переменных не на 1 LB> - LB> 2 - 4 байта, а на 8 - 16 - 32 байта. Говорят, что исправлено.
Исправлено в 3.4.1.
LB> 2. У GCC размер размер структуры всегда кратен 4-ем байтам, не LB> зависимо от того, что в ней лежит, т.е. sizeof(struct s{char a:1; char LB> b:1})==4. М.б. связано с проблемой (1)
Hе всегда. Для упакованных структур размер равен сумме размеров полей, т.е. твоя структура будет иметь размер 1. С исправленной проблемой (1) не связано.
LB> 3. Оптимизатор у IAR чуть LB> лучше, чуть лучше организовано обращение к локальным переменным в LB> функциях
Верно.
С thumb никогда не работал, поэтому (4) и (5) пропускаю.
LB> 6. У IAR есть встроенные LB> функции для обращения CPSR, еще что-то аналогичное, у GCC этого нет.
А какая разница, есть встроенное или нет? :) Пользоваться невстроенным ничуть не хуже.
Всего наилучшего, [Team PCAD 2000] Алексей М. ... Чудо-йогурт Био. Чемпион среди какао.
Привет, Alex! Вы писали to Leha Bishletov on Tue, 12 Apr 2005 18:58:12 +0400:
LB>> 2. У GCC размер размер структуры всегда кратен 4-ем байтам, не LB>> зависимо от того, что в ней лежит, т.е. sizeof(struct s{char a:1; LB>> char b:1})==4. М.б. связано с проблемой (1) AM> Hе всегда. Для упакованных структур размер равен сумме размеров AM> полей, т.е. твоя структура будет иметь размер 1. С исправленной AM> проблемой (1) не связано.
Возможно я не нашел как это (упаковку структур) включить.
LB>> 6. У IAR есть встроенные LB>> функции для обращения CPSR, еще что-то аналогичное, у GCC этого LB>> нет. AM> А какая разница, есть встроенное или нет? :) Пользоваться AM> невстроенным ничуть не хуже.
Встроенные превращаются в одну команду, исключаются CALL и BX. Используются эти команды для входа/выхода из критических секций, так что лишние CALL могут мешать.
With best regards, Leha Bishletov. E-mail: snipped-for-privacy@rol.ru
Привет Leha!
12 Apr 05 19:51, Leha Bishletov писал Alex Mogilnikov:AM>> Hе всегда. Для упакованных структур размер равен сумме AM>> размеров полей, т.е. твоя структура будет иметь размер 1. С AM>> исправленной проблемой (1) не связано.
LB> Возможно я не нашел как это (упаковку структур) включить.
__attribute__ ((packed))
LB>>> 6. У IAR есть встроенные LB>>> функции для обращения CPSR, еще что-то аналогичное, у GCC этого LB>>> нет. AM>> А какая разница, есть встроенное или нет? :) Пользоваться AM>> невстроенным ничуть не хуже.
LB> Встроенные превращаются в одну команду, исключаются CALL и BX. LB> Используются эти команды для входа/выхода из критических секций, так LB> что лишние CALL могут мешать.
Я, когда мне это надо, прекрасно пользуюсь невстроенными конструкциями, которые превращаются в одну, две, или столько, сколько мне надо команд. Вот для иллюстрации пара-тройка примеров:
================ test.c ================== #define get_cpsr() ({ \ unsigned long tmp; \ asm volatile ("mrs %0, cpsr" : "=r" (tmp) :);\ tmp; \ })
#define set_cpsr(val) \ asm volatile ("msr cpsr, %0" ::"r" (val));
unsigned long fff(void) { return get_cpsr(); }
void ggg(unsigned long x) { set_cpsr(x); }
void hhh(void) { set_cpsr(12345); } ========================================== ================ test.s ================== .file "test.c" .text .align 2 .global fff .type fff, %function fff: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. @ lr needed for prologue mrs r0, cpsr mov pc, lr .size fff, .-fff .align 2 .global ggg .type ggg, %function ggg: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. @ lr needed for prologue msr cpsr, r0 mov pc, lr .size ggg, .-ggg .align 2 .global hhh .type hhh, %function hhh: @ args = 0, pretend = 0, frame = 0 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. mov r3, #12288 @ lr needed for prologue add r3, r3, #57 msr cpsr, r3 mov pc, lr .size hhh, .-hhh .ident "GCC: (GNU) 3.4.1" ==========================================
Всего наилучшего, [Team PCAD 2000] Алексей М. ... Программисты знают, что на каждую улицу Пушкина должна быть улица Попкина.
Hello Leha.
12 Apr 05 15:05, you wrote to me:AB>> ps: Я слышал, что ARM SDT (или как он у них называется) лучше AB>> всех. LB> А что это такое?
Компилятор фирмы ARM
Alexey
Hello Alex.
12 Apr 05 18:26, you wrote to Artemyi Panasuk:AP>> Есть мнение одного забyгоpного товаpища, что Гцц немеpенно AP>> эффективен. AM> Hе верь ему. Гцц эффективен умеренно. Hо зато за него не надо AM> платить.
Можно так: gcc для ARM немерянно еффективнее, чем gcc, для AVR ;)
Alexey
Средства должны быть бесплатны, и использоваться кучей народа иначе не имеет смысла. Под gcc много кода есть, синтаксис ассемблера похож на "C", поэтому многие используют его. С ув, Дмитрий Черкашин.
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.