LINUX.ORG.RU

История изменений

Исправление 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-ов скорее всего кучу времени съедает дополнительно).