|
WinAVR криво собирает код... |
|
|
|
 |
Ответов
|
Apr 9 2009, 05:57
|

Профессионал
    
Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581

|
по поводу увеличения размера кода "свежими" версиями - я тут создавал темку, где мне доступно объяснили, что есть масса ключей оптимизации, которые позволяют и свежей версией получить минимальный размер кода. в моем случае я довольно легко добился лучшего результата, чем при сборке старой версией. возможно, немножко обидно, что раньше маленький код получался сам, а теперь надо какие-то опции включать-выключать и т.п. - однако, никто не сравнивал "старый" и "новый" код по быстродействию, например? может, размер - не самое главное? тем более когда речь не о килобайтах, а о байтах разницы. раньше, например, когда писалось PORTB |= _BV(PB1); компилятор всегда генерировал код с обращением к ячейке памяти по соответствующему адресу, т.е. делал минимум 3 команды: LDS, ORI и STS. это было очень хорошо (с одной стороны), так как легко позволяло обращаться к порту по указателю, но по скорости SBI все-же гораздо лучше. и вот в последней версии заметил, что теперь генерируется именно SBI! причем при обращении через указатель получается "старый" вариант - ведь лучше же стало, а?!  хотя странности присутствуют все равно в коде
--------------------
Я бы взял частями... но мне надо сразу.
|
|
|
|
|
Apr 9 2009, 07:29
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(ARV @ Apr 9 2009, 08:57)  раньше, например, когда писалось PORTB |= _BV(PB1); компилятор всегда генерировал код с обращением к ячейке памяти по соответствующему адресу, т.е. делал минимум 3 команды: LDS, ORI и STS. это было очень хорошо (с одной стороны), так как легко позволяло обращаться к порту по указателю, но по скорости SBI все-же гораздо лучше. и вот в последней версии заметил, что теперь генерируется именно SBI! Код #include <avr/io.h>
void foo() { PORTB |= 0x01; } WinAVR-20060421 (gcc 3.4.6) -Os -S -mmcu=atmega8 Код foo: sbi 56-0x20,0 ret Более древних на работе нет, но что-от мне вспоминается, что это только с gcc 2.95 такое было, а с перехода на 3.х я уже вместо макросов inb, outb, sbi да cbi стал писать обычное =, |= да &=~ Точнее, с момента полного перехода, кода 2.95 уже был снесён на всех компах.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
Сообщений в этой теме
Alexey Belyaev WinAVR криво собирает код... Apr 4 2009, 16:03 SysRq Да вроде бы в этом куске кода GCC как обычно распи... Apr 4 2009, 20:03 Alexey Belyaev А можете дать результат сборки вашей? lss и hex... Apr 4 2009, 20:15 SysRq Цитата(Alexey Belyaev @ Apr 5 2009, 00:15... Apr 4 2009, 20:30 Alexey Belyaev Но всё же какой-то косяк...
К примеру вот такой ls... Apr 6 2009, 04:06 _Pasha Цитата(Alexey Belyaev @ Apr 6 2009, 07:06... Apr 6 2009, 05:44  Alexey Belyaev Цитата(_Pasha @ Apr 6 2009, 12:44) Вероят... Apr 6 2009, 05:56   _Pasha Цитата(Alexey Belyaev @ Apr 6 2009, 08:56... Apr 6 2009, 06:10    Alexey Belyaev Цитата(_Pasha @ Apr 6 2009, 13:10) Дык по... Apr 6 2009, 08:42 Сергей Борщ Цитата(Alexey Belyaev @ Apr 6 2009, 07:06... Apr 6 2009, 08:04 _Pasha Скачал. Собрал. Посмотрел. Описанного глюка не был... Apr 6 2009, 15:21 ReAl Цитата(_Pasha @ Apr 6 2009, 18:21) Неполе... Apr 6 2009, 15:46 Сергей Борщ Цитата(_Pasha @ Apr 6 2009, 18:21) Неполе... Apr 6 2009, 15:46 Alexey Belyaev Спасибо за разъяснения. Будем продолжать учиться. Apr 7 2009, 04:17 ARV Было бы просто замечательно, если бы кто-то из глу... Apr 7 2009, 05:25 _Pasha Я б выбрал для симуляции другой камень типа м168, ... Apr 7 2009, 06:06 Сергей Борщ Цитата(ARV @ Apr 7 2009, 08:25) Было бы п... Apr 7 2009, 06:52 ARV Уважаемый Сергей Борщ!
Я прочитал в документа... Apr 7 2009, 15:55  ReAl Цитата(ARV @ Apr 7 2009, 18:55) Я прочита... Apr 7 2009, 16:58   ARV Цитата(ReAl @ Apr 7 2009, 20:58) Вообще-т... Apr 7 2009, 17:48    ReAl Цитата(ARV @ Apr 7 2009, 20:48) если его ... Apr 7 2009, 19:35     _Pasha Цитата(ReAl @ Apr 7 2009, 22:35) *) при т... Apr 7 2009, 20:14 SysRq ARV, а Proteus версии у вас какой? Пробегавший мим... Apr 7 2009, 22:20 _Pasha Цитата(SysRq @ Apr 8 2009, 01:20) Т.е. ... Apr 8 2009, 04:34  SysRq Цитата(_Pasha @ Apr 8 2009, 08:34) О чем ... Apr 9 2009, 22:48 ARV протеус у меня точно такой же.
я активно применяю... Apr 8 2009, 04:23 ARV с -mno-wrap вообще странность какая-то... вот сейч... Apr 8 2009, 05:14 ReAl Цитата(ARV @ Apr 8 2009, 08:14) -relax ус... Apr 8 2009, 18:29 manul78 ... Народ !!! У меня еще прикольнее..... Apr 8 2009, 18:43 zltigo Цитата(manul78 @ Apr 8 2009, 21:43) Атмег... Apr 8 2009, 19:22 Petka Цитата(manul78 @ Apr 8 2009, 22:43) ... Н... Apr 8 2009, 19:23 Rst7 Цитатаабстрактному среднему писателю GCC лишь-бы н... Apr 8 2009, 20:12 manul78 Блин, у меня теперь еще интересней проблема !
... Apr 8 2009, 22:06 Сергей Борщ Цитата(manul78 @ Apr 9 2009, 01:06) C:... Apr 9 2009, 07:41  manul78 Цитата(Сергей Борщ @ Apr 9 2009, 11:41) П... Apr 9 2009, 16:56 _Pasha Цитата(ARV @ Apr 9 2009, 08:57) и вот в п... Apr 9 2009, 06:17 ARV "старый" - это какой-то старый я всегда... Apr 9 2009, 07:42 ARV и все-таки, почему никто из гуру не ответит на воп... Apr 9 2009, 09:57 Nick_Shl А я столкнулся с таким глюком: есть бутлоадер с эм... Apr 9 2009, 18:45 aesok Цитата(Nick_Shl @ Apr 9 2009, 22:45) А я ... Apr 9 2009, 19:32  Nick_Shl Цитата(aesok @ Apr 9 2009, 21:32) Вот ЭТО... Apr 9 2009, 20:06  aesok Цитата(aesok @ Apr 9 2009, 23:32) Вот ЭТО... Apr 9 2009, 20:38   Nick_Shl Цитата(aesok @ Apr 9 2009, 22:38) Если re... Apr 9 2009, 21:17 _Pasha Цитата(Nick_Shl @ Apr 9 2009, 21:45) А я ... Apr 10 2009, 00:03  Nick_Shl Цитата(_Pasha @ Apr 10 2009, 02:03) Заинт... Apr 10 2009, 04:23
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|