ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
26 апреля
269562 Топик полностью
ReAl (31.08.2011 17:25, просмотров: 204) ответил Bill на Добавлю также, что компилятор от IAR выполняет такую же оптимизацию.
GCC тоже. А также заменяет длинные call/jmp на короткие, если куски даже из разных файлов легли близко. Впрочем, это делает линкер, так что он это и для асм-програм сделает. Мне ещё в этом смысле нравился AVOCET-овский ассемблер для MCS-51. Он имел псевдокоманды условных длинных переходов. Сначала он вставлял вместо каждой длинную команду перехода и её обход коротким условным переходом противоположного смысла. Потом смотрел на расстояния и если доставало, то заменял коротким условным переходом. Потом делал еще проход, так как код сократился и мог начать доставать следующий переход. Естественно, аналогично обрабатывал и безусловные переходы. И на асме удобно было кодировать, и С-компилятор и код генерировал в виде таких псевдокоманд, проход ассемблера их потом ужимал.