Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Циклы в ARM9
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
toweroff
Добрый день!

Заинтересовал такой момент - что лучше использовать для цикла

1. for (i=0; i<10; i++) {}

2.
i=10;
do {} while (--i);

3.
i=10;
while (i--) {}

4. Я маюсь дурью и компилятор все сделает как надо sm.gif

Помнится, в х51 был предпочтительнее второй вариант (потому как djnz) для циклов <=256, а вот как дело с ARM9 ?
DpInRock
4
R.A.K.
Цитата(toweroff @ Jul 31 2011, 18:55) *
Заинтересовал такой момент - что лучше использовать для цикла

Пятый вариант:
for (i = 10; i; i--) {}
А то нехорошо получается. sm.gif Зачем for обделили?
Циклы вообще лучше организовывать с проверкой на ноль (это я Генрри Уоррена цитирую - он это еще где-то в начале книги пишет).
Цитата(toweroff @ Jul 31 2011, 18:55) *
Помнится, в х51 был предпочтительнее второй вариант (потому как djnz) для циклов <=256, а вот как дело с ARM9 ?

x51 - 8-bit.
ARM - 32-bit. Будет одинаково - прогонять цикл 10 раз или 4294967295. sm.gif

Попутно почитайте Хэзфилд, Кирби "Искусство программирования на С", главу про оптимизацию - "разворачивание цикла", "предварительная оптимизация - зло" (или как-то так - не помню).
И вот уже с этих позиций (а также, например,с учетом, 5-стадийного конвейера в ARM9) DpInRock, несомненно, прав - Вы маетесь пунктом 4. sm.gif


toweroff
Спасибо, я, в общем-то, так и предполагал sm.gif
GetSmart
На Армах не нужно так извращаться. Там в исходниках лучше поощрять читабельность и краткость. Экстрим нужно (если нужно) делать на асме.
Aurochs
Цитата(GetSmart @ Jul 31 2011, 20:04) *
На Армах не нужно так извращаться. Там в исходниках лучше поощрять читабельность и краткость. Экстрим нужно (если нужно) делать на асме.

+1
haker_fox
QUOTE (toweroff @ Jul 31 2011, 23:55) *
2.
i=10;
do {} while (--i);

3.
i=10;
while (i--) {}

Эти циклы по сути разные. Первый выполнится всегда, как минумум один раз. Второй - нет. Нужно соблюдать осторожность при их использовании. А так - безприкословно вариант 4 laughing.gif
toweroff
Цитата(haker_fox @ Aug 2 2011, 06:30) *
Эти циклы по сути разные

разумеется sm.gif
подразумевались просто циклы с пред- и постусловиями
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.