История изменений
Исправление i-rinat, (текущая версия) :
Судя по коду, ты его из ответа на Stack Overflow скопировал, а ведь там не полный код, а только кусок, который нужно вставить в изначальный код. Поэтому сложно понять, что ты хотел сделать.
Но с большой вероятностью ты прикладываешь образец с шагом в один байт. То есть N*M алгоритм вместо N+M.
В Си программист вызовет strstr()
, и это будет работать быстрее. Даже если ты решишь реализовывать алгоритмы руками, отладить код на Си будет проще, причём не придётся заморачиваться с аллокацией регистров — это делает компилятор. На ассемблере ты в жонглировании регистрами закопаешься ещё до того, как получишь рабочий код.
add esp, 8
Такой трюк можно было без проблем использовать во времена 386 и 486, но сейчас это прилично ударит по скорости работы. Процессоры расчитывают, что с данными на стеке ты работаешь или напрямую, или через пары push-pop. Если ты пытаешься push’ить в стек, а потом отматывать через изменение esp, ты ломаешь его уютный закешированный мирок, и вынуждаешь синхронизироваться с памятью. Компиляторы Си это знают, и таких трюков не используют. Вот тебе ещё прирост скорости при использовании компиляторов.
Исходная версия i-rinat, :
Судя по коду, ты его из ответа на Stack Overflow скопировал, а ведь там не полный код, а только кусок, который нужно вставить в изначальный код. Поэтому сложно понять, что ты хотел сделать.
Но с большой вероятностью ты прикладываешь образец с шагом в один байт. То есть N*M алгоритм вместо N+M.
В Си программист вызовет strstr()
, и это будет работать быстрее. Даже если ты решишь реализовывать алгоритмы руками, отладить код на Си будет проще, причём не придётся заморачиваться с аллокацией регистров — это делает компилятор. На ассемблере ты в жонглировании регистрами закопаешься ещё до того, как получишь рабочий код.
add esp, 8
Такой трюк можно было без проблем использовать во времена 386 и 486, но сейчас это прилично ударит по скорости работы. Процессоры расчитывают, что данным на стеке ты работаешь или напрямую, или через пары push-pop. Если ты пытаешься push’ить в стек, а потом отматывать через изменение esp, ты ломаешь его уютный закешированный мирок, и вынуждаешь синхронизироваться с памятью. Компиляторы Си это знают, и таких трюков не используют. Вот тебе ещё прирост скорости при использовании компиляторов.