_G3 Ну да, только умножение, в таком случае, будет через своп происходить, т.е. будут выполняться еще инструкции, для обработки исключений ;)
61,41,52,65: .data const_61 dd 04325C54h const_41 dd 063E7064h const_52 dd 04EC4EC5h const_65 dd 03F03F04h .code mov edx,eax shl...
Если слегка изменить требования: 1)public mul 2)Выход: cf cmp eax, 05555555Ah jbe @F sub eax, 055555554h cmp eax,...
"Это медленная команда" хм.. выходит строковые команды тормозят даже с префиксом повторения :( "Но это самый быстрый способ поиска байта в...
S_T_A_S_ "IMHO самым быстрым будет всёже такой поиск" Честно говоря, сомнительно - не вникая в подробности, сразу видно, что основной цикл...
S_T_A_S_ "в реале же рулит AMD CodeAnalyst" Секундомер рулит :) ,хотя, конечно, можно довериться и системным часам. В общем процессор...
misaligned data will cost 6-12 clocks extra when a cache line boundary is crossed Ну, если мы делаем предвыборку, то заодно можно и это...
S_T_A_S_, IMHO, не стоит придавать такого большого значения выравниванию данных(да и кода) - процессоры сами достаточно успешно с этим...
Скорее байт - линейка обычно 64 байта. Пока просматриваем одну нужно делать prefetch на следующую, и т.д. Наверно так... ...Да и ecx на ноль...
придется дополнительно проверять второй байт Да и еще ecx на ноль, но это же лучше двух проходов ;)
Можно два раза прогнать зачем? просто нужно scasb использовать... Можно попробовать распараллелить процесс: in_str proc ;вход: ;edi...
В случае с косвенной адресацией этого приемущества уже нет, т.к. используется другой опкод для mov'а.
leo Просто, если не загружать адреса в edx, а использовать непосредственную адресацию, тогда mov будет 5 байт(т.к. один из операндов...
Ну, если flag - переменная локальная, тогда одинаково получиться... если нет, и есть свободный регистр, то короче будет обращаться к ней по указателю.
leo Для наглядности можно заменить эквивалентом Даже нужно, если обнулять флаг при помощи eax and flag,eax ,чтобы избавиться от зависимости
Имена участников (разделяйте запятой).