Size: a a a

Ассемблер

2021 September 01

d

disba1ancer in Ассемблер
как минимум 3, а может и 4
источник

A

Aleksandr in Ассемблер
Впрочем, если совсем не хочется этого делать - присобачь туда mmx. Все лучше чем ничего
источник

d

disba1ancer in Ассемблер
не уж то он быстрее будет?
источник

A

Aleksandr in Ассемблер
Об этом я не подумал, не знаю. Думаю, с учетом размера регистров - будет, но надо бы проверить
источник

d

disba1ancer in Ассемблер
но возможно что и его надо как-т включать сначала
источник

d

disba1ancer in Ассемблер
что за остановка регистров?
источник

E

Entusiast in Ассемблер
Когда много регистров (от 2) не записываются, а только читаются. Но это критично, в частности, для Core2
В цикле это, естественно
источник

d

disba1ancer in Ассемблер
и чем это плохо/хорошо?
источник

E

Entusiast in Ассемблер
Плохо, каждый раз при такой остановке идёт задержка в 5 тактов:

; Example 8.1a. Register read stall on Core2
L: mov eax, [esi+ecx]
mov [edi+ecx], ebx
add ecx, 4
js
L

В данном случае - регистры ESI и EDI делают остановку
Чинится так:

; Example 8.1b. Register read stall removed
L: mov eax, [ecx+esi*1]
mov [ecx+edi*1], ebx
add ecx, 4
js
L

Но опять же, я так и не просмотрел, относится ли это к твоему коду. Просто подозрение
источник

d

disba1ancer in Ассемблер
у меня только в районе rep цикл, остальное исполняется строго по направлению вперёд
источник

d

disba1ancer in Ассемблер
я для тебя добавил в гист третий вариант, такой же как и второй, но без имён регистров
источник

E

Entusiast in Ассемблер
Да не важно, я давно ещё для себя переименовал всё, и посмотрел нормальный вариант

Выше актуально
источник

d

disba1ancer in Ассемблер
что актуально? остановка регистров? и где именно?
источник

E

Entusiast in Ассемблер
Актуальна зависимость исполнения от значения регистров
И остановка тоже, потом досмотрю, если не актуальна - скажу
источник

d

disba1ancer in Ассемблер
ну без этого никак, во многих местах
источник

E

Entusiast in Ассемблер
Ну вот и причина в алгоритме
источник

d

disba1ancer in Ассемблер
ну а по другому не сделать
источник

E

Entusiast in Ассемблер
Первый вариант оставляй
источник

d

disba1ancer in Ассемблер
а то что он сначала в конец пишет не страшно?
источник

E

Entusiast in Ассемблер
А что в этом страшного?
источник