Ориентировка на процессоры какая?
я мерил под своим (Sandy Bridge) у обоих производительность примерно одинакова, но хз под какой проц хочу, мне это нужно для работы без ОСи
Мне кажется, или ты просто поменял код местами
Алгоритм одинаковый, просто поменял местами фрагменты
первая, это тот вариант что я получил вчера, вторая её модификация
Почему бы тебе не использовать оегистры размером побольше чем 32? Для кого придумали всякие там sse?
У него не инициализирован SSE Он пишет для своей ОС
нет не одинаковый, первая заполняет в конце и в начале чтобы осталась только область выровненная на 4 потом rep stos, второй работает иначе, сначала выравнивает в начале, затем rep stos, затем заполняет не выровненный остаток
где ответ?
Дак в чем проблема инициализировать?
у меня ещё не совсем ОС, и не инициализированно нихрена, даже прерывания и я не собираюсь их инициализировать ибо биосу это не понравится, а он мне будет нужен, чтобы загрузить нормальный ELF
Да они одинаковы. Но вот у меня подозрения насчёт остановки регистров. Да и выполнятся всё будет, зависимо от значений регистров. Комбинировал бы ты как-то, но я в код не углублялся И с остановкой регистров до конца не разобрал, дела появились
что за остановка регистров?
Когда много регистров (от 2) не записываются, а только читаются. Но это критично, в частности, для Core2 В цикле это, естественно
и чем это плохо/хорошо?
Плохо, каждый раз при такой остановке идёт задержка в 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 Но опять же, я так и не просмотрел, относится ли это к твоему коду. Просто подозрение
у меня только в районе rep цикл, остальное исполняется строго по направлению вперёд
я для тебя добавил в гист третий вариант, такой же как и второй, но без имён регистров
Обсуждают сегодня