Согласование UART AVR и мобильника... хелп!
- Реклама
NiTr0 писал(а):Это я к тому, что "более оптимизированный" код в С++ не обязан стать короче после трансляции в асм
Совершенно верно, ибо существует оптимизация как по размеру, так и по времени выполнениня, поэтому тут действительно возможны варианты
Вы наверное имеете ввиду, что запись while (!(UCSRA & (1 << UDRE)))
длинне на операцию отрицания, чем while (UCSRA ^ (1 << UDRE)), но результат компиляции первой значительно короче, чем результат компиляции второй. Это действительно так, и собственно тем и хорош Си, что при грамотной разработке компилятора позволяет учитывать возможности "железа", для получения оптимального результата. В данном случае имеется ввиду команда sbis (или sbic). Мне, когда я пишу на асм, не удобно смотреть адреса регистров (тк sbis не на все пространство ввода-вывода действует), поэтому я пользуюсь универсальыми решениями (исключения когда уж совсем критичная к времени задача), которые не всегда оптимальны по скорости. Си компилятор позволяет не запоминать труднозапоминаемые данные и сосредоточиться на задаче.
Однако офтоп получился, ну да ладно, зато обсудили "хитрости и тонкости", по-моему рациональное звено в теме есть.
smac, мне казалось с вами интересно будет побеседовать. Ошибся. У вас нет ни чувства юмора ни логики. Могла получится не плохая тема. Но так её передернуть...
Не утруждайте себя ответом. Скучно читать ваши посты.
smac писал(а):Давайте не будем разводить религиозную войну...
Это по типу на вид у меня уже есть, строгого с предупреждением пока нету.smac писал(а):...призыв издевательства над разработчиками я осуждаю и прошу Вас впредь воздерживаться от подобных высказываний. ...
Не утруждайте себя ответом. Скучно читать ваши посты.
asteroid7 писал(а):smac, мне казалось с вами интересно будет побеседовать. Ошибся. У вас нет ни чувства юмора ни логики. Могла получится не плохая тема. Но так её передернуть...
Не утруждайте себя ответом. Скучно читать ваши посты.
Все-таки отвечу. Началось все с этого
asteroid7 писал(а):В Си, строка while ( UCSR0A ^ (1<<UDRE) ) не имеет смысла, т.к. в операторе while выражение всегда будет истинно... или true... , а проще просто зациклится.
Я Вам пытался доказать, что в некоторых случаях не зациклится, Вы же плавно перешли к обсуждению комилятора в нелицеприятной манере, так какого ответа вы ожидали? Шутки по поводу криворукости разработчиков компилятора можете отпускать в курилке, я уверен, что руки у этих разработчиков попрямее чем у многих на этом форуме.
По поводу чувства юмора - не мне судить, а вот по поводу логики - хотелось бы узнать, что нелогичного в моих постах?

