|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Дек 3, 2003 19:09:14 Ну что ж. И в лодку сесть, и рыбку не съесть :) Думай тады сам. |
|
|
Дата: Дек 3, 2003 20:56:11 Есть такая мысля, читаем блоками по 1000h байты из файла в буфер, теперь имеем указатель на считанный блок байтов, далее так или почти так: mov edi, OFFSET ScanString
mov esi, OFFSET Buffer
mov ecx, ScanStringLength
@loop:
test ecx, ecx
jz @find
mov al, BYTE PTR [edi]
test al, al
jz @00h_find
cmp BYTE PTR [esi], al
je @parse
inc edi
inc esi
mov ecx, ScanStringLength
jmp @loop
@parse:
inc edi
inc esi
dec ecx
jmp @loop
@00h_find:
inc edi
inc esi
dec ecx
jmp @loop
@find:
Ну ещё нужно учесть когда будет конец буфера 1000h и вычислить адрес, остальное вроде должно работать, я ещё не проверял, сегодня я никакой %) |
|
|
Дата: Дек 3, 2003 21:07:39 Volodya То, что я предлагал и есть как раз самый быстрый способ, если конечно код хороший будет. |
|
|
Дата: Дек 3, 2003 21:09:51 Asterix так я ж тебе готовую функцию запостил :) |
|
|
Дата: Дек 3, 2003 21:20:59 dragon Скорее всего да. В случае точного поиска подстроки в строке я бы с тобой поспорил, а что до неточного поиска - идея выглядит очень забавной. |
|
|
Дата: Дек 3, 2003 21:21:28 Asterix test ecx,ecx jz @findможно заменить на jecxz @findИ вообще лучше уж так:
mov edi, OFFSET ScanString
mov esi, OFFSET Buffer
mov ecx, ScanStringLength + 1
@loop:
dec ecx
jz @find
mov al, BYTE PTR [edi]
inc edi
test al, al
jz @00h_find
cmp BYTE PTR [esi], al
je @parse
inc esi
mov ecx, ScanStringLength + 1
jmp @loop
@parse:
inc esi
jmp @loop
@00h_find:
inc esi
jmp @loop
@find:Можно ещё подоптимизировать ;-) |
|
|
Дата: Дек 3, 2003 21:31:41 · Поправил: Asterix hello_world Извини ;-) , но я терпеть не могу всякие lodsb, jecxz, cmpsb и т.д. поэтому в твой код даже не вникал, может он и работает :-) , но уж больно не наглядный :-) И ещё, я пишу на masm32 поэтому со стеком не работаю как в твоей процедуре, по крайней мере не здесь, в масме всё гораздо проще. |
|
|
Дата: Дек 3, 2003 21:33:29 Quantum Ну вот ещё мне один jecxz предлагает :-), ладно, когда код будет полностью рабочим тогда займусь оптимизацией ;-) |
|
|
Дата: Дек 3, 2003 21:57:25 Asterix Извини ;-) , но я терпеть не могу всякие lodsb, jecxz, cmpsb и т.д. поэтому в твой код даже не вникал, может он и работает :-) Да, Воин Дзена, я разочарован :) А где же красота кода, свойственная ассемблеру, где часы медитации, проведенные за его оптимизированием? :) Что будет дальше? Переход на позорные дельфи или васик ? :) Пора спасать свою душу :))) И ещё, я пишу на masm32 :-) а это тут причем? |
|
|
Дата: Дек 3, 2003 22:00:19 hello_world При том, что этот отступник (Asterix), использует что-то вроде .IF eax != NULL, спаси господи его душу. Мы отвергаем его дзенское происхождение. |
|
|
Дата: Дек 3, 2003 22:08:23 hello_world Строковые инструкции вообще-то тормозные, быстрая только rep movsd, да и то быстрее данные через регистры mmx перемещать Volodya Это как раз и есть для поиска неточных строк как эти сигнатуры. Для поиска точных строк естесственно лучше искать первый символ подстроки, а потом сравнивать остатки. |
|
|
Дата: Дек 3, 2003 22:12:13 dragon Строковые инструкции вообще-то тормозные Я не по скорости оптимизировал а по размеру. |
|
|
Дата: Дек 3, 2003 22:22:30 Меня не покидает чувство что в моём коде есть серьёзная ошибка и она там таки есть!, скоро будет исправленный вариант. |
|
|
Дата: Дек 3, 2003 22:24:24 · Поправил: Asterix volodya Из-за того что я у ся в дампере не использовал местами .if/.endif и пропустил там серьёзную ошибку :-))) |
|
|
Дата: Дек 3, 2003 22:33:46 dragon Это как раз и есть для поиска неточных строк как эти сигнатуры. Для поиска точных строк естесственно лучше искать первый символ подстроки, а потом сравнивать остатки Еще раз - да, для неточного поиска идея правильная. Хотя на algolist некоторые вещи на эту тему лежали... Что до точного, то давным-давно разработана методика таблицы смещений, что и реализовано, например, в поиске Бойера-Мура. Asterix Что лишний раз говорит о том, что ты связался с презренным ремеслом HLL-кодера, так и не дойдя до высот кристально чистого, возвышенного и точного мастерста асм-программера. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.053 |