реклама на сайте
подробности

 
 
> WinAVR криво собирает код...
Spider
сообщение Apr 4 2009, 16:03
Сообщение #1


В поисках истины
***

Группа: Свой
Сообщений: 431
Регистрация: 7-01-06
Из: Россия
Пользователь №: 12 923



Писал себе и писал прошивку и вдруг в один прекрасный момент она начала собираться "криво" и откатить назад не получается. Всё пропало. Помогите, что я натворил то?
А именно кривость проявляется в следующем. если после сборки открыть и посмотреть листинг вокруг строки sei(); перед циклом майна. То там какие-то хаотические куски кода, на которых проц то делает переполнение то ребутится. В общем ведёт себя неадекватно, а в main.c этого кода нет. Точнее есть но не в этом месте.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ARV
сообщение Apr 9 2009, 05:57
Сообщение #2


Профессионал
*****

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



по поводу увеличения размера кода "свежими" версиями - я тут создавал темку, где мне доступно объяснили, что есть масса ключей оптимизации, которые позволяют и свежей версией получить минимальный размер кода. в моем случае я довольно легко добился лучшего результата, чем при сборке старой версией. возможно, немножко обидно, что раньше маленький код получался сам, а теперь надо какие-то опции включать-выключать и т.п. - однако, никто не сравнивал "старый" и "новый" код по быстродействию, например? может, размер - не самое главное? тем более когда речь не о килобайтах, а о байтах разницы.

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


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
ReAl
сообщение Apr 9 2009, 07:29
Сообщение #3


Нечётный пользователь.
******

Группа: Свой
Сообщений: 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 уже был снесён на всех компах.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 18:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.0143 секунд с 7
ELECTRONIX ©2004-2016