defunct 0 12 декабря, 2008 Опубликовано 12 декабря, 2008 · Жалоба Знаток си defunct мог бы для приличия скомпилить свой код под gcc, например, для avr, а потом то же самое переложить на if и скомпилить еще раз. И удивиться. И больше никогда дурацкий сишний switch не юзать. Мимо кассы. Какое отношение конкретный компилятор имеет к возможностям языка? Все равно, что сказать - возьмите паскаль компайлер от микроэлектроника и попробуйте сложить два "real" аргумента. И протащиться удивиться от результата. И больше никогда дурацкий паскалевский REAL не юзать. А потом турбопаскаль научился раздельной компиляции. И Борманд ;) придумал библиотеку типа теперешнего VCL, только в текстовом режиме работала. TurboVision. У меня по ней книжка до сих пор валяется. Классная вещь была - красиво построена. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 13 декабря, 2008 Опубликовано 13 декабря, 2008 · Жалоба просто для вас ламер - это тот, кто не с вами, вот и все. знаем таких, проходили в школе. не хватает лишь лозунга "бей паскальников!" Не, не так, нужно еще добавить для порядку "бей паскальников, спасай Россию!" Это реально привлекло в программировние людей, многие из которых стали ламерами Не, я бы сказал, ламерами не становятся, ламерами рождаются. поскольку на расплодившихся ламеров обратили свое внимание и другие более крутые фирмы и забрали их к себе В общем, обида, видимо, в том, что на умненьких, беленьких и пушистеньких сишников никто не обращает внимание и к себе не забирает. А я вот вам таки скажу, какой язык программирования самый правильный - идите на job.ru и смотрите цены. Я надеюсь никто из присутствующих не будет спорить с тем, в каком месте находится си/встраиваемый си ? Мимо кассы. Какое отношение конкретный компилятор имеет к возможностям языка? Утверждаете, что GCC - плохой компилятор ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
defunct 0 13 декабря, 2008 Опубликовано 13 декабря, 2008 · Жалоба Утверждаете, что GCC - плохой компилятор ? Нет, gcc хороший компилятор плюс еще и бесплатный, но он имеет и недостатки. Для AVR - это например неэффективная с т.з. быстродейтсвия организация стека и как раз неэффективная генерация кода для switch. Однако, есть компиляторы более эффективно справляющиеся с оператором switch - VS, RVDS, IAR... Может лучше их асм код посмотрим? Эффективность и правильность работы Real операндов ведь тоже не зависит от языка, это проблема конкретного компилятора. По оператору варианта. Паскаль не дает возможности выполнения множества вариантов, C - дает. Вы языки хотели сравнить или компиляторы? Если первое - тогда почему просто не примете факт - по оператору варианта Паскаль слил? Есои второе - так скажите наконец - где же взять эффективный компилятор Pascal для AVR? ;> Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 13 декабря, 2008 Опубликовано 13 декабря, 2008 · Жалоба Если первое - тогда почему просто не примете факт - по оператору варианта Паскаль слил? Ничуть, все легко и красиво реализуется на if - не надо без необходимости умножать сущности (с). А вот си слил свой switch по скорости. И если вы не понимаете, почему, почитайте про case самостоятельно. Я скажу более, для МК паскалевский case - самое то. А сишный switch, если вы хотите сказать про его "дополнительные" возможности - красиво заложенные в код грабли. зы: про компиляторы - смотрите ссылку, которую дали выше, _самостоятельно_ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 13 декабря, 2008 Опубликовано 13 декабря, 2008 · Жалоба Ничуть, все легко и красиво реализуется на if - не надо без необходимости умножать сущности (с). А вот си слил свой switch по скорости. И если вы не понимаете, почему, почитайте про case самостоятельно. Огурцов продолжает нести пургу :(. Сколь-нибудь вменяемый компилятор прекрасно оптимизирует баланс между if() и switch() при этом получая или абсолютно идентичный код для if() и switch() в простых случаях применения, либо много более высокоэффективный по скорости табличный код для сложных switch(). При этом switch() выигрывает и по читаемости (в невырожденных случаях) и всегда по расширяемости. По второй причине я достаточно часто использую switch() и в вырожденном варианте в качестве 'рыбы' для возможного последующего расширения. Кусок реального исходника: void ring_parser( Fdata_t *udp ) { switch( udp->state ) { case oNHOOK: set_state( udp, dIALtONE ); break; default: break; } udp->timer = xTickCount; } Причем код при этом получается ни на бит не отличающийся от if() Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 13 декабря, 2008 Опубликовано 13 декабря, 2008 (изменено) · Жалоба Огурцов продолжает нести пургу Ничуть, проверено, как и сказал выше на WinAVR-GCC. Вообще, считаю его хорошим компилятором, поэтому всякие "но он имеет и недостатки" не катят. Особенно в форуме AVR/PIC. Ну а про остальное - вам тоже нужно объяснять чем case от if/switch отличается ? Грустно. Ссылки на компилеры: (сейчас e-lab стащу) http://e-lab.de/index_en.html Embedded Pascal for the AVR http://users.iafrica.com/r/ra/rainier/pasavr.exe MikroElektronika Advanced Pascal Compiler for AVR #16194 http://www.dontronics-shop.com/mikroelektr...er-for-avr.html Табличка внизу http://www.computerbase.de/lexikon/Atmel_AVR Во, ребята отрываются ) Programming in C is: for(;P("\n").R-;P("|"))for(e=3DC;e-;P("_"+(*u++/8)%2))P("| "+(*u/4)%2); and hunting for pointer BUGs for ever ............... Изменено 13 декабря, 2008 пользователем Огурцов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 2 13 декабря, 2008 Опубликовано 13 декабря, 2008 (изменено) · Жалоба Во, ребята отрываются ) Ну так и отрывались-бы там вместе. Вместо этого начинаете выказывать глупость в местах, где ее способны оценить по "достоинству". Вообще, считаю его хорошим компилятором.... Вы многе еще чего "считаете", причем совершенно догматично-безосновательно :(. 152 void show_mode_if(void) \ show_mode_if: 153 { \ 00000000 939A ST -Y, R25 \ 00000002 938A ST -Y, R24 154 if( ( mod_flag & MF_MODE_MASK ) == 2 ) \ 00000004 .... LDI R30, mod_flag \ 00000006 8100 LD R16, Z \ 00000008 7003 ANDI R16, 0x03 \ 0000000A 3002 CPI R16, 2 \ 0000000C F459 BRNE ??show_mode_if_0 155 { PORTD &= (~(PD_LED_SAW|PD_LED_TRIANGULAR|PD_LED_RANDOM)); \ 0000000E B302 IN R16, 0x12 \ 00000010 7F08 ANDI R16, 0xF8 \ 00000012 BB02 OUT 0x12, R16 156 PORTD |= PD_LED_RANDOM; \ 00000014 9A92 SBI 0x12, 0x02 157 srand( (ushort)run_cnt + 1 ); \ 00000016 .... LDI R30, run_cnt \ 00000018 8180 LD R24, Z \ 0000001A E090 LDI R25, 0 \ 0000001C 9601 ADIW R25:R24, 1 \ 0000001E 018C MOVW R17:R16, R25:R24 \ 00000020 .... RCALL srand \ 00000022 C010 RJMP ??show_mode_if_1 158 } 159 else if( ( mod_flag & MF_MODE_MASK ) == 1 ) \ ??show_mode_if_0: \ 00000024 3001 CPI R16, 1 \ 00000026 F429 BRNE ??show_mode_if_2 160 { PORTD &= (~(PD_LED_SAW|PD_LED_TRIANGULAR|PD_LED_RANDOM)); \ 00000028 B302 IN R16, 0x12 \ 0000002A 7F08 ANDI R16, 0xF8 \ 0000002C BB02 OUT 0x12, R16 161 PORTD |= PD_LED_TRIANGULAR; \ 0000002E 9A91 SBI 0x12, 0x01 \ 00000030 C009 RJMP ??show_mode_if_1 162 } 163 else if( ( mod_flag & MF_MODE_MASK ) == 0 ) \ ??show_mode_if_2: \ 00000032 2300 TST R16 \ 00000034 F019 BREQ ??show_mode_if_3 164 { PORTD &= (~(PD_LED_SAW|PD_LED_TRIANGULAR|PD_LED_RANDOM)); 165 PORTD |= PD_LED_SAW; 166 } 167 else 168 { mod_flag &= (~MF_MODE_MASK); \ 00000036 8100 LD R16, Z \ 00000038 7F0C ANDI R16, 0xFC \ 0000003A 8300 ST Z, R16 169 PORTD &= (~(PD_LED_SAW|PD_LED_TRIANGULAR|PD_LED_RANDOM)); \ ??show_mode_if_3: \ 0000003C B302 IN R16, 0x12 \ 0000003E 7F08 ANDI R16, 0xF8 \ 00000040 BB02 OUT 0x12, R16 170 PORTD |= PD_LED_SAW; \ 00000042 9A90 SBI 0x12, 0x00 171 } 172 } \ ??show_mode_if_1: \ 00000044 9189 LD R24, Y+ \ 00000046 9199 LD R25, Y+ \ 00000048 9508 RET 174 void show_mode_sw(void) \ show_mode_sw: 175 { \ 00000000 939A ST -Y, R25 \ 00000002 938A ST -Y, R24 176 switch( mod_flag & MF_MODE_MASK ) \ 00000004 .... LDI R30, mod_flag \ 00000006 8100 LD R16, Z \ 00000008 7003 ANDI R16, 0x03 \ 0000000A F0B9 BREQ ??show_mode_sw_0 \ 0000000C 950A DEC R16 \ 0000000E F069 BREQ ??show_mode_sw_1 \ 00000010 950A DEC R16 \ 00000012 F481 BRNE ??show_mode_sw_2 177 { 178 case 2: 179 PORTD &= (~(PD_LED_SAW|PD_LED_TRIANGULAR|PD_LED_RANDOM)); \ 00000014 B302 IN R16, 0x12 \ 00000016 7F08 ANDI R16, 0xF8 \ 00000018 BB02 OUT 0x12, R16 180 PORTD |= PD_LED_RANDOM; \ 0000001A 9A92 SBI 0x12, 0x02 181 srand( (ushort)run_cnt + 1 ); \ 0000001C .... LDI R30, run_cnt \ 0000001E 8180 LD R24, Z \ 00000020 E090 LDI R25, 0 \ 00000022 9601 ADIW R25:R24, 1 \ 00000024 018C MOVW R17:R16, R25:R24 \ 00000026 .... RCALL srand \ 00000028 C00C RJMP ??show_mode_sw_3 182 break; 183 184 case 1: 185 PORTD &= (~(PD_LED_SAW|PD_LED_TRIANGULAR|PD_LED_RANDOM)); \ ??show_mode_sw_1: \ 0000002A B302 IN R16, 0x12 \ 0000002C 7F08 ANDI R16, 0xF8 \ 0000002E BB02 OUT 0x12, R16 186 PORTD |= PD_LED_TRIANGULAR; \ 00000030 9A91 SBI 0x12, 0x01 \ 00000032 C007 RJMP ??show_mode_sw_3 187 break; 188 189 default: 190 mod_flag &= (~MF_MODE_MASK); \ ??show_mode_sw_2: \ 00000034 8100 LD R16, Z \ 00000036 7F0C ANDI R16, 0xFC \ 00000038 8300 ST Z, R16 191 192 case 0: 193 PORTD &= (~(PD_LED_SAW|PD_LED_TRIANGULAR|PD_LED_RANDOM)); \ ??show_mode_sw_0: \ 0000003A B302 IN R16, 0x12 \ 0000003C 7F08 ANDI R16, 0xF8 \ 0000003E BB02 OUT 0x12, R16 194 PORTD |= PD_LED_SAW; \ 00000040 9A90 SBI 0x12, 0x00 195 } 196 } \ ??show_mode_sw_3: \ 00000042 9189 LD R24, Y+ \ 00000044 9199 LD R25, Y+ \ 00000046 9508 RET Но это в общем-то Ваши проблемы :), до тех пор, пока Вы не начнете публично их обсуждать. Изменено 13 декабря, 2008 пользователем zltigo Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ReAl 0 13 декабря, 2008 Опубликовано 13 декабря, 2008 · Жалоба То есть, вы уже успели прочитать студентам курс лекций про asm, IAR, avr-gcc, CodeVision, BASComБоже упаси! Как только начинают обучение с "курсов лекций" "по IAR", "по GCC", "по CodeVision" - всё, сливай воду. Для ознакомления с перспективами такого подхода ("... аппараты Бимена. В тех проклятых лентах, которые дали мне образование был предусмотрен спектрограф Хенслера... ... мне скажут, что мой мозг предназначен для Хенслера...") - читать Азимова, рассказз "Профессия" ( "Специальность"? В украинском переводе "Фах", кстати, я очень рад, что он был у дочери в курсе иностранной литературы). вместо goto и метки можно воспользоваться любым оператором цикла и break, производительность от этого не пострадает. do { ..... if ( x ) break; .... if ( y ) break; .. } while (0); а смотреться будет, на мой взгляд красивше нагляднее. Нафиг-нафиг. Пробовал в детстве, но аллергией на goto, навязанной излишне академичными книжками, переболел. Даже с комментарием /* while(0) */ в начале возле do { всё равно плохо. Поначалу кажется - "о как красиво". А потом при модификациях вдруг цикл добавить, из которого выходить нужно - и путаница "это тот break или другой"? Итого где можно выделить в функцию и return (да, аллергии на несколько точек выхода из функции у меня тоже нет), то выделяю, пусть даже она один раз вызывается. Где обилие локальных переменных данной функции, к которым нужно обеспечить доступ в блоке, затрудняет выделение блока кода в функцию (локальных функций ведь, привет от паскаля, в стандартном С нет, а привыкать к этому расширению gcc не хочу, не так часто надо), там goto. А ссылочка от gotty очень хороша. Рекомендую всем любителям убедительных фраз.И чем она хороша? Агрессии не меньше, чем в этой теме. Правильные слова - правильны как-то независимо от языка. Пример про "на паскале вы НЕ МОЖЕТЕ такого написать" - ну извините. Если у кого-то поведение зависит от того, стоит ли рядом кто-то, кто НЕ РАЗРЕШАЕТ гадить где ешь - то это его личные проблемы. Точно так же можно ругать какой-то естественный человеческий язык за многообразие конструкций и оттенков (их ещё и понять может быть тяжело человеку, плохо знающему этот язык! он же ещё и жидкость для ухода за кожаными кошельками может на щёки себе натереть!!!). На человеческом языке поэты могут писать стихи, основанные на игре звучания слов практически без какого-либо смысла, учёные могут писать сложные тексты, непонятные школьникам (ничего, подучатся и поёмут, если захотят, зато между учёными коммуникация эффективнее, чем если бы они пытались писать "понятно для всех"), а можно и ругательства на стенах баллончиком с краской писать. Давайте запретим эти языки, как "растлевающие малолетних". Там правильно в начале сказано про проблему нехватки квалифицированных специадистов с "правильно поставленными мозгами" - но это проблема не "использования языка С", а обучения им пользоваться, так же как и обписанные да обписянные подъезды - проблема не человеческого языка как такового. Более того, там же сказано (стр. 6) даже если школьники прошли какие-то школьные курсы ... "постановка мозгов" им в школе (за редкими исключениями) нередко оказывается выполненной настолько неправильно ... , что послежствия ощущаются годы - а ведь в школе не С и не С++ дают, а Паскаль. Значит - не панацея и даже не облегчает ничего. Кстати, как вам конструкция "за редкими исключениями нередко оказывается" - я об неё споткнулся. Может, автору надо изучить вместо русского какой-то другой язык? В котором "он НЕ МОЖЕТ такого написать"? Или "за редким исклдючением" касалось слов "в школе" а не "оказывается выполненной"? Что касается паскаля... Язык как язык. Можно и на нём закрутить нерабочий текст с трудно отыскиваемыми ошибками. Можно и на нём работать в малых объёмах (да какая-то мега128 с внешней ОЗУ-шкой и тем более ARM имеют ресурсов больше, чем "Robotron-1715" на Z80 с CP/M и паскалем или чем "Электроника-60"/"ДВК-2", для которых тоже на паскале писалось). Ну если иметь подходящий компилятор. А если их нет - то хоть в ООН жалуйся на маркетологов и издательства, которые "служат усилителем", легче не станет. Писал когда-то парень по соседству для "Электроники-60" на паскале интерпертатор языка управления лабораторной установкой с КАМАК-ом. Насколько я помню, треть программы - асмовые вставки, и не только в кусках обмена с аппаратурой. Но "самый верх" - на паскале довольно красивый получалося. А когда я выбирал для себя на чём более-менее окончательно остановиться, я пописал немного и на паскале, и на С, посравнивал генерируемый код. У паскаля он был гораздо страшнее. Особых оптимизаций тогда не на чём было делать, а С оказался гораздо ближе к реальным процессам. Убедился, что на С мне в большинстве случаев удастся обойтсиь без асм-вставок (он их и не позволял), а если вдруг таки надо будет - то одну-две подпрограммы на ассемблере просто напишу. Вот и всего выбора. begin/end на него вообще не повлияли :-) Сейчас у дочери в школе паскаль - ну и нормально. Главное что не бейсик, как в предыдущей. Может даже лучше, что не С - весь С всё равно не дадут, а с укороченного подмножества потом переучиваться может оказаться труднее, как совсем новое пойдёт органичнее. Показал и как множествами пользоваться, и вложенными функциями (почему-то в школе это опустили). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aesthete Animus 0 13 декабря, 2008 Опубликовано 13 декабря, 2008 · Жалоба Боже упаси! Как только начинают обучение с "курсов лекций" "по IAR", "по GCC", "по CodeVision" - всё, сливай... В тех моих словах должно было звучать бурлеско... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ReAl 0 13 декабря, 2008 Опубликовано 13 декабря, 2008 · Жалоба Неповоротливость, как и гибкость, зависят только от языка, но никак не от компилятора. Почему, например, для перевда буквы в нижний регистр нельзя просто установить бить 0x40, как в Си (c |= 0x40), а надо сначала получить код символа, выполнить с ним арифметическую операцию, а потом преобразовать опять в символ?Ну, вообще говоря, и на С часто (и правильно) рекомендуется делать это через ctype.h tolower(), а не врукопашную битиками жоглировать. В тех моих словах должно было звучать бурлеско...ф-ф-ф-ф-фуууухххх... P.S. Во времена популярности Turbo C и Turbo Pascal неоднократно раскручивал "Сишников" (я тогда был студентом-адептом паскаля) на тест: экзешник хелловорда на паскале всегда получался на 12-15 килобайт меньше, чем на паскале :) а заполнение экрана посимвольно всегда завершалось быстрее, чем при сишной реализации. и это повергало Сишников (стаж работы годы против моих студенческих дней) в уныние, которое они "обоснованно" (при помощи Тurbo Debugger-а) доказывали тем, что printf Cи использует "стандартную" функцию MS DOS для вывода на дисплей, а "нестандартный паскаль" напрямую через прерывание BIOS действует. :) не правда ли, все это вызывает смех сейчас, когда хелловорд на любом языке перевалил за сотню килобайт и на трехгигагерцовом пне запускается порой 1,5 секунды :) 1) как это на 12-15 ??? На паскале занимало минус 6-9 килобайт? Специально достал старючий компакт и развернул TURBOC20 #include <stdio.h> int main() { printf("Hello, %s!\n", "world"); return 0; } >tcc -mt h.c >dir h.exe 13.12.2008 16:36 6 548 H.EXE Кстати, mingw32-gcc даёт файл 6144 байт. 2) Нестандартность вывода через биос приводит к тому, что в принципе вроде бы и консольная программа, а вывод в файл не перенаправить. Приходилось print screen делать. в качестве стёба - теперь я знаю, кто мне присылает скриншоты выдачи avreal вместо перенаправленного в файл вывода - привыкшие к этому на турбопаскальных программах Но если очень хотелось, то и на турбо-С можно было работать через биос #include <conio.h> int main() { сprintf("Hello, %s!\n", "world"); return 0; } 13.12.2008 16:48 6 098 H1.EXE Это при всех стандартных действиях. А если одну заглушку поставить, это надо где-то по старым исходникам глянуть, то в программах, не пользующихся некоторыми вещами из стандартной библиотеки можно было раза в два меньше получить для программы, выполняющей реальную работу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 13 декабря, 2008 Опубликовано 13 декабря, 2008 · Жалоба Ну так и отрывались-бы там вместе. Вместо этого начинаете выказывать глупость в местах, где ее способны оценить по "достоинству". Это не моя "глупость". К сожалению. Но шарж этот на си весьма нравится. Вы многе еще чего "считаете", причем совершенно догматично-безосновательно :(. Только не безосновательно, а бездоказательно - приводить здесь какие-то доказательства - пустая трата времени. Зевак (или жевак) выше хорошо про это написал. А вот основания "считать" как раз есть - личный опыт. И я ему верю, исходя из личного опыта ))) если иметь подходящий компилятор. А если их нет - то хоть в ООН жалуйся на маркетологов и издательства, которые "служат усилителем", легче не станет. Зачем же в ООН. Компилятор паскаля не на много сложнее хорошего программатора ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aesthete Animus 0 13 декабря, 2008 Опубликовано 13 декабря, 2008 · Жалоба Это не моя "глупость". К сожалению. Но шарж этот на си весьма нравится. Гыгыгы... Вам сюда: http://www.ioccc.org/main.html :-D Вот только подобное не имеет отношение к программированию на Си. Писать такой код, подобно пайке при включенном питании, то есть тому, за что сиюжеминутно следует отрывать руки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 13 декабря, 2008 Опубликовано 13 декабря, 2008 · Жалоба Вот только подобное не имеет отношение к программированию на Си. Имеет, имеет. И даже обфускаторы для этого не нужны ) Или можете привести такое же для паскаля ? Давайте, вместе посмеемся. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ReAl 0 13 декабря, 2008 Опубликовано 13 декабря, 2008 · Жалоба ок. можем переиграть условия. вот код, 1 в 1 аналогичный предложенному "другими" людьми: var c : char; begin repeat read(c); write(c); until c = #$0d; end. размер exe-шника из-под Delphi7 15360 байт. скажите, не говорит ли это о том, что результат из-под Паскаля как минимум не хуже Сишного ни по размеру итогового файла. ни по скорости его исполнения? А как там с переносимостью/ошибкоустойчивостью с указанием явной константы вместо символа конца строки? ;) А то как ch |= 0x40, так надо locase()/tolower(), а тут уже можно #$0d вместо '\n' ? Аналог предыдущего с ограничением длины строки #include <stdio.h> int main() { char buf[32]; fgets(buf, 31, stdin); puts(buf); return 0; } mingw32-gcc - 6144 байта. О полной идентичности работы говорить тяжело - с перенаправлением в любом случае можно на вход получить файл вместо консоли и при этом while( putchar(getchar()) != '\n' ) ; (независимо от того, написано так или как ранее с промежуточной переменной и do {} while ) будет работать некорректно в случае файла, не содержащего '\n' - застрянет в вечном цикле. Что она и делает. И паскальская (BP7, других нет) тоже, только она ещё и по Ctrl-C не снимается, в отличие от С-шной. P.S. самое странное, что действительно, при этом коде вывродится 2 строки, как у gotty! если поначалу я подозревал, что тут какой-то подвох с его стороны, то теперь я сам не понимаю. как это возможно... судя по всему, дело в буфферизации ввода-вывода ОС... однако, это по-моему, странно :(консоль традиционно построчно-буферизованная. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VCucumber 0 13 декабря, 2008 Опубликовано 13 декабря, 2008 · Жалоба Посмотрел компиляторы по ссылкам выше. Embedded Pascal for the AVR - похоже, старенький, сыренький и к тому же мертвенький. e-lab - довольно большой дистрибутив, а возможности не очень впечатлили, и какой-то заморочный, требует напряга. Разбирайтесь сами. MikroElektronika Advanced Pascal Compiler for AVR - ничотак, на первый взгляд все по уму, вполне может быть взять за отправную точку. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться