История изменений
Исправление firkax, (текущая версия) :
Не хотел терять 30% производительности, а потерял 2x.
Нет, тема была не про то как улучшить эту функцию, а про то, почему такое отличие в скорости в зависимости от адреса. В итоге ответ найден.
Как улучшить - это другая задача, про неё я темы не создаю, но делать всё хочу сам.
У тебя какой-то странный ассемблер, там всё местами поменяно и сигилов нет.
Обычно наоборот ругаются... Лично мне AT&T-синтаксис (тот что у тебя и он дефолтный в gcc/gas) крайне некомфортен, хотя при желании его и можно читать. Всегда пользовался интеловским - он используется в официальных мануалах к x86-совместимым процам, и наверно по этой причине именно он всегда использовался в ассемблерах/компиляторах/отладчиках, которые писались нативно под x86, на которых в досе я его и осваивал (ну и книжки по x86 ассемблеру все были именно в этом синтаксисе).
1:
.align 32
Метка то до align-а, туда походу куча nop-ов напихана в итоге которые часть цикла, отчего и всё медленно (цикл мало того что пересекает границу, так ещё и парсинг 29 байт nop-ов скорее всего кучу времени съедает дополнительно).
Исходная версия firkax, :
Не хотел терять 30% производительности, а потерял 2x.
Нет, тема была не про то как улучшить эту функцию, а про то, почему такое отличие в скорости в зависимости от адреса. В итоге ответ найден.
Как улучшить - это другая задача, про неё я темы не создаю, но делать всё хочу сам.
У тебя какой-то странный ассемблер, там всё местами поменяно и сигилов нет.
Обычно наоборот ругаются... Лично мне AT&T-синтаксис (тот что у тебя и он дефолтный в gcc/gas) крайне некомфортен, хотя при желании его и можно читать. Всегда пользовался интеловским - он используется в официальных мануалах к x86-совместимым процам, и наверно по этой причине именно он всегда использовался в ассемблерах/компиляторах/отладчиках, которые писались нативно под x86, на которых в досе я его и осваивал (ну и книжки по x86 ассемблеру все были именно в этом синтаксисе).
1:
.align 32
Метка то до align-а, туда походу куча nop-ов напихана в итоге которые часть цикла, отчего и всё медленно (цикл мало того что пересекает границу, так ещё и парсинг 13 байт nop-ов скорее всего кучу времени съедает дополнительно).