Ответ: От "Ума" компилятора зависит много, но не все.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено ДМ 09 января 2004 г. 15:47
В ответ на: Я думаю никакого значения не имеет. Значение имеет только компилятор. отправлено AlexandrY 09 января 2004 г. 12:24

Я перепробовал 6 компиляторов СИ для AVR. Откомпилируйте код

if (a<0) b=0;
if (a==0) b=1;
if (a>=0) b=2;

Даже хваленый IAR, и тот будет трижды загружать в регистр из памяти значение переменной, трижды sts и три условных перехода. Только GCC способен догадаться, что достаточно один раз загрузить число в регистр. Но даже и он не способен догадаться, что CP или TST то же достаточно делать один раз.
Однако, и бедность команд процессора значит очень много. При одной и той же длине инструкции (16 бит для того же AVR) если ядро разрабатывалось знающими людьми, то увеличение количество регистров всегда производится в ущерб количеству команд. Такова природа процессора. Нет ничего революционного в удвоении числа регистров, но надо помнить за счет чего это делается.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru