Цитата(IgorKossak @ Jan 25 2007, 12:08)

Достаточно посмотреть листинг после компиляции с С или того же С++, чтобы убедиться насколько компактнее и быстрее получается код если применять косвенную адресацию.
При помощи этого типа адресации реализован метод оптимизации известный как "кластеризация переменных". В этом методе рядом расположенные переменные (в общем случае разных типов) рассматриваются как непрерывный массив (кластер) и доступ к ним организовывается косвенной адресацией с однократной установкой адреса начала кластера и дальнейшим доступом к переменным командами ldd/std. Преимущества этого метода перед lds/sts очевидны.
Фокус в том, что кластеризацию переменных полноценно может реализовать только компилятор, вручную писать таким образом чревато коварными ошибками, т. к. придётся опять же вручную отслеживать взаиморасположение переменных.
Я по первости когда просматривал листинг накак въехать не мог.

Дело в том, что при длительном программировании на ASMе НИ РАЗУ НЕ ИСПОЛЬЗОВАЛ данные инструкции (std/ldd) и смотрел на них с непониманием. Их использование у видел только в листинге компилятора и по первости не мог понять зачем.
Сейчас на Точке Опоры ветка есть "побайтное программирование на IAR", там один вопрос задаёт. Ну я написал ответ в виде одной строки на си. Ну и все пробуют эту строку под разными компиляторами. Изворачиваются, переменные переставляют.

Но такого кода по эффективности как IAR - ни один компилятор не предоставил. Ближайший - Image craft вроде. Выигрыш за счёт применения STD и MOVW. Да и вручную лучше не напишешь.