gudleifr писал(а):
Кто будет им пользоваться? Опять Вы. Зачем тогда Вам самого себя оптимизировать?
Ну, тут как раз не только я. Ну, я так скромно надеюсь... А если встрою в какую-нибудь систему - так наверняка!
gudleifr писал(а):
Почему просто не запомнить рекомендации Рея Дункана и не отказаться от писания кривого кода?
Из-за простоты реализации! При раскрутке проще генерить код по шаблону, потом применять правила оптимизации при добавлении последующего кода. Так сделано у Мура и мне нравится!
Получается просто и понятно.
gudleifr писал(а):
Или создать пару-другую макросов, учитывающих Ваши ассемблерные вкусы?
А вот их сложно сделать. И если таки сделать, то получится ровно то же самое...
Ну, с точностью до...
gudleifr писал(а):
Кто, в конце концов, запретит Вам скормить уже готовый блок вашему супер-пупер рандомизирущему оптимизатору?
В момент компиляции все указатели и буфера актуальны. Если это делать позже - н. восстановить все, что было на момент генерации - это ресурсы. Кроме того, если будет сдвижка - код "поползет" и его надо будет в свою очередь пересматривать. А так оптимизация делается прямо во время генерации кода и "взгляд назад" обычно не превышает несколько предыдущих команд. Кроме того, оптимизация идет в компилирующем слове как часть его работы. Тут же учитывается и семантика. Если это делать потом, восстановить семантику труднее. Например, опрерация
+ после литерала изменяет "
push +
mov ax,const" на "
add ax, const". При этом она использует указатели на границы кодов команд. Анализ кода для такой оптимизации
намного сложнее - необходимо выделять кодовые последовательности, просматривая намного больше таблиц. С указателем проще!