<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>AVR4027: Трюки и советы по оптимизации Си кода для 8-и разрядных AVR микроконтроллеров. Ч.2</title>
		<description>Discuss AVR4027: Трюки и советы по оптимизации Си кода для 8-и разрядных AVR микроконтроллеров. Ч.2</description>
		<link>https://chipenable.ru/index.php/programming-avr/item/180-avr4027-tips-and-tricks-to-optimize-your-c-code.html</link>
		<lastBuildDate>Mon, 13 Apr 2026 06:44:06 +0000</lastBuildDate>
		<generator>JComments</generator>
		<atom:link href="https://chipenable.ru/index.php/component/jcomments/feed/com_k2/180.html" rel="self" type="application/rss+xml" />
		<item>
			<title>Pashgan says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/180-avr4027-tips-and-tricks-to-optimize-your-c-code.html#comment-3268</link>
			<description><![CDATA[Спасибо. Поправил (сейчас не видно, потому что страница кэширована).]]></description>
			<dc:creator>Pashgan</dc:creator>
			<pubDate>Wed, 18 Sep 2013 12:04:27 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/180-avr4027-tips-and-tricks-to-optimize-your-c-code.html#comment-3268</guid>
		</item>
		<item>
			<title>САБ says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/180-avr4027-tips-and-tricks-to-optimize-your-c-code.html#comment-3266</link>
			<description><![CDATA[Хотя насчет двух "д" что-то я стал сомневаться.]]></description>
			<dc:creator>САБ</dc:creator>
			<pubDate>Wed, 18 Sep 2013 09:53:57 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/180-avr4027-tips-and-tricks-to-optimize-your-c-code.html#comment-3266</guid>
		</item>
		<item>
			<title>САБ says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/180-avr4027-tips-and-tricks-to-optimize-your-c-code.html#comment-3265</link>
			<description><![CDATA["постдекремент" тоже пишется слитно, разумеется]]></description>
			<dc:creator>САБ</dc:creator>
			<pubDate>Wed, 18 Sep 2013 09:49:33 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/180-avr4027-tips-and-tricks-to-optimize-your-c-code.html#comment-3265</guid>
		</item>
		<item>
			<title>САБ says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/180-avr4027-tips-and-tricks-to-optimize-your-c-code.html#comment-3264</link>
			<description><![CDATA["постинкремент" , "преинкремент" пишутся слитно, а "преддекремент" - слитно и с двумя "д". Опечатки: 4.2 "получается при использование", 4.4 - "мы может разделить"]]></description>
			<dc:creator>САБ</dc:creator>
			<pubDate>Wed, 18 Sep 2013 09:48:40 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/180-avr4027-tips-and-tricks-to-optimize-your-c-code.html#comment-3264</guid>
		</item>
		<item>
			<title>САБ says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/180-avr4027-tips-and-tricks-to-optimize-your-c-code.html#comment-3263</link>
			<description><![CDATA[Совет №8 слабоват. Во-первых, чтобы эффективно использовать возможность Си компилировать один и тот же исходник для разных архитектур для большинства переменных (а для временных - вообще для всех) нужно использовать типы uintXX_fast_t (в конкретно этом примере надо использовать тип uint8_fast_t). Для AVR разницы не будет, а вот при использовании этого же кода на 16- или 32-битном процессоре разница уже будет ощутима.]]></description>
			<dc:creator>САБ</dc:creator>
			<pubDate>Wed, 18 Sep 2013 09:41:20 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/180-avr4027-tips-and-tricks-to-optimize-your-c-code.html#comment-3263</guid>
		</item>
		<item>
			<title>neiver says:</title>
			<link>https://chipenable.ru/index.php/programming-avr/item/180-avr4027-tips-and-tricks-to-optimize-your-c-code.html#comment-3261</link>
			<description><![CDATA[Еще из таких микрооптимизаци й можно вспомнить замену логических операций на побитовые. Логический оператор И: void Bar(uint8_t a, uint8_t b){ if(a && b){ PORTB = 0; PORTA = 0; }
} 138: 88 23 and r24, r24
13a: 21 f0 breq .+8
13c: 66 23 and r22, r22
13e: 11 f0 breq .+4
140: 18 ba out 0x18, r1
142: 1b ba out 0x1b, r1
144: 08 95 ret Побитовый оператор И: void Bar(uint8_t a, uint8_t b){ if(a & b){ PORTB = 0; PORTA = 0; }
} 138: 68 23 and r22, r24
13a: 11 f0 breq .+4
13c: 18 ba out 0x18, r1
13e: 1b ba out 0x1b, r1
140: 08 95 ret В данном случае разница в 4 байта кода и 0-3 такта времени. Только надо учитывать, что такая оптимизация не всегда применима и выгодна. В данном случае a и b должны быть нормализованным и - 0 или 1. Еще логический оператор ленивый, он не вычисляет b если a ложно.]]></description>
			<dc:creator>neiver</dc:creator>
			<pubDate>Tue, 17 Sep 2013 15:51:30 +0000</pubDate>
			<guid>https://chipenable.ru/index.php/programming-avr/item/180-avr4027-tips-and-tricks-to-optimize-your-c-code.html#comment-3261</guid>
		</item>
	</channel>
</rss>
