AVRGCC ICCAVR

Loading thread data ...

Hед.

Абсолютно правильно. Что самое смешное.

А с того, что умный шибко. GCC. Соптимизировал твой while(forver) в конструкцию вида jmp $. Ибо, следи за мыслью. Он их вначале загружает в регистры из ОЗУ и потом сравнивает. Первая стадия оптимизации, следи за мыслью -- не грузить в регистры уже там находящееся, ибо это бессмысленно и накладно по ресурсам:

lds r18, 0x0131 lds r19, 0x0132 lds r24, 0x014F lds r25, 0x0150 L1: cp r18, r24 cpc r19, r25 breq L1

Так сделает каждый разумный компилятор. Может не конкретно в таком выражении (вот IAR не делает, и это по совершенно отдельной причине), но в случае отсутствия циклов -- точно совершенно. Вторая стадия оптимизации -- выкинуть весь цикл ввиду абсурдности. Попробуй поставить разные -O0, -O1, -O2, -O3 ключи оптимизации и посмотреть что получается. Занимательно будет. И заодно почитай info gcc о ключиках, которые включают эти -Ox.

Hе виснем, а выполняем while(forever). В смысле jmp $.

google://volatile. Вобщем низачот. В очередной раз убеждаюсь, что модное @#$ (IAR) в красивой обёртке учит исключительно плохому. Если не дошло, то шибко умный в данном случае на самом деле IAR, а не GCC, который видит, что ты в данном случае сам облажался или не умеешь на C писать, но он панимашь-ли юзер-френдли должен быть, и подчищает все баги за тобой на ходу, отключая оптимизацию в явно абсурдных ситуациях.

Reply to
Kirill Frolov
Reply to
Sergei Podstrigailo
Reply to
Alexander Konosevich
Reply to
Alexander Torres
Reply to
Alex Mogilnikov

Hа XXX -- лучше, а YYY -- однозначно дерьмо.

Reply to
Kirill Frolov

formatting link

Да конечно XXX -- говно и поделки финских студентов. (скромно умолчу, что насколько я знаю внутри uVision тот же gcc запрятан).

Reply to
Kirill Frolov

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.