Нужна код сравнивающий две области памяти с одинаковой длиной на идентичность. Т.е. есть два указателя, есть длина, при первом же отличии выполняется допустим jne _CompFalse если всё идентично, то выполняется jne _CompTrue и т.п. Нужно чтобы быстро работало. Объём памяти будет кратен 4-м. Если есть наработки или если не впадлу - выложите.
посмотри асмовые исходники memcmp от студии, интела и других компилеров. "быстро работать" будет после того как правильно сформулируюшь задачу. какие объемы памяти сравниваются? какова средняя длина совпадающих блоков? в некоторых случаях выгодно считать хеши блоков и сравнивать их, что, кстати, очень рулит на многоядерных процессорах
Th0r Нужно идти в ногу со временем.. ) FPU,SSE,SSEII, MMX... Плюс, человек верно говорит, в некоторых случаях куда рульнее сравнивать хеши...
Хеши имеют смысл только если производится многократное сравнение для одного и того же набора блоков (типа, тысяча блоков и надо сравнить каждый с каждым). Иначе их только вычислять дольше чем простое сравнение сделать.
sergh так ведь сравниваются хэши не всех блоков сразу блоки нарезаются на кусочки была бы известна задача - был бы ответ. а так... можно только хвостом помахать. рассмотрим три варианта: а) сравниваются две структуры данных на предмет искажений. CRC32 отлетает сразу, поскольку если ситуация допускает _предумышленные_ искажения, то это ласты. хэши дают _надежный_ негативный ответ (блоки не совпадают), а вот если блоки "как бы совпадают" надо перепроверить еще раз. а это уже тормоза. б) имеем файл и хотим найти все его копии на диске. поскольку большинство файлов имеют расхождение в первом же десятке байт (не говоря про размер , то на фиг париться с хэшами... в) имеет несколько астрономических фото (случай из моей практики) и нам надо отделить шумы матрицы от настоящих звезд. так вот, разрезав фотоку на блоки (а она каждая в bpm и очень до хвоста метров весит я скажу), для каждого из которого мы вычисляем хэш, мы получаем ~2x ускорение на двухядерном процессоре, а при большом кол-ве фоток можем легко распределить эту задачу между кучей компьютеров (помогает на сильно зашумленных снимках, на которых возможно появление реально новой звезды).
Не уходите от темы. Нужен код простого побайтного сравнения на Асме. Используя rep cmpsb. Пытался писать сам, но уровень знания языка не позволяет написать рабочую функцию. Помогите.