Re: Удаление лишних пробелов | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
Если уж быть до конца точным, то надо обрабатывать оба случая: когда длина исходной строки не кратна 4, т.е. cmp esi,ebp
ja _Exit сработает раньше, чем мы выберем хвостовые байты. И когда длина результирующей строки не кратна 4, т.е. в ebx останется "хвост", не сброшенный в буфер. |
Re: Удаление лишних пробелов | |
---|---|
ssa Сообщений: 13008 Откуда: Москва Дата регистрации: 23.03.2005 |
Не знаю кому и что очевидно, но я не единожды проверял. ------------------ Лень - это неосознанная мудрость. |
Re: Удаление лишних пробелов | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
Ну так и я проверял - если строка начинается с пробела, а дальше идут непробельные символы, то пробел не обрезается
|
Re: Удаление лишних пробелов | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
Кстати, от ведущего пробела можно избавиться простым добавлением перед циклом инструкции mov ah,1
|
Re: Удаление лишних пробелов | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Вообще-то логика функции "схлопнуть дублирующиеся пробелы" не предполагает удаления ведущего и хвостового пробелов, если они одиночные... Конечно можно и так сделать - т.е. совместить её с ALLTRIM-ом, но это уже вопрос "постановки задачи"
------------------ WBR, Igor |
Re: Удаление лишних пробелов | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
Функа с удалением ведущих и хвостовых пробелов и корректной, вроде бы, обработкой "хвостов", когда длины строк не кратны 4.
Фоксовый код приводить не буду, лень набивать)) |
Re: Удаление лишних пробелов | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
OFFTOP
"В руках" medstraxa команда mov почему-то ассоциируется с фрикциями. |
Re: Удаление лишних пробелов | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
а команда pop?
|
Re: Удаление лишних пробелов | |
---|---|
Simple777 Сообщений: 33855 Дата регистрации: 05.11.2006 |
Таки да.
|
Re: Удаление лишних пробелов | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
без push бессмысленна... ------------------ WBR, Igor |
Re: Удаление лишних пробелов | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
ну почему же
mov [esp], что то там pop |
Re: Удаление лишних пробелов | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Что же ты собрался "вынимать", если до того ничего не "вложил"? Впрочем, знатокам виднее
------------------ WBR, Igor |
Re: Удаление лишних пробелов | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
И все-таки, Леонид был почти прав, когда говорил, что его код очень быстрый.
Если пересылку байтов делать не через стек, а через регистр, т.е. заменить push dword [esi] pop dword [edi] на mov dl,[esi] mov [edi],dl то его код выигрывает у моего в случая 1,5,6 и 8. В остальных мой код быстрей. |
Re: Удаление лишних пробелов | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
Надо попробовать запилить код на MMX/XMM регистрах. За счет уменьшения чтения/записи должен получиться неплохой выигрыш. Правда уверенности в этом нет, т.к. работа с ними требует больше телодвижений, чем с регистрами общего назначения, что может свести к нулю выигрыш.
|
Re: Удаление лишних пробелов | |
---|---|
_vit Сообщений: 5175 Дата регистрации: 29.07.2002 |
Пожалуй да если проц одноядерный и система не с вытесняющей многозадачностью. Почему не RDTSCP ? Как насчет сериализации выполнения команд? |
Re: Удаление лишних пробелов | |
---|---|
_vit Сообщений: 5175 Дата регистрации: 29.07.2002 |
Вот тут хорошо в одном месте все и о проблемах с RDTSC на разных процах и о методологии измерения.
www.slideshare.net |
Re: Удаление лишних пробелов | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
Ну так RDTSCP все же относительно новая инструкция, поэтому закладываться на ее наличие я бы не стал - старого железа кругом навалом.
Плюс по моим наблюдениям фокс и CallWindowProc исполняются постоянно на одном ядре. Вот начет сериализации вопрос не понял. |
Re: Удаление лишних пробелов | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
Дальше пятой страницы читать не стал. Человек, у которого каша в голове из-за непонимания хотя бы состояний ACPI и как они коррелируют с работой процессора, ничего дельного не напишет |
Re: Удаление лишних пробелов | |
---|---|
leonid Сообщений: 3204 Откуда: Рига Дата регистрации: 03.02.2006 |
Я весьма часто использовал такую конструкцию:
Здесь как раз pop без push. |
Re: Удаление лишних пробелов | |
---|---|
spinz Сообщений: 5263 Дата регистрации: 21.01.2016 |
Ну это стандарт же, получить текущий EIP
|
© 2000-2024 Fox Club  |