Почему компиляторы не используют инструкции повторения REP movs?
Ни разу не видел эту инструкцию в дизассемблер коде.
Вроде как, как я понимаю(предполагаю). Она должна быть в миллиард раз быстрее. Того что обычно компилирует компилятор в 4-6 строк с кучей операций.
Типа настроил cx, di si и поехал. По идее, как я представляю(и как реализовывал в разных редакторах эл. блок схемах). Не знаю точно, как в реальности. Но по факту, 1 раз настроил, дал команду, активировал скрытые флаги(д триггера). и подождал пока счетчик до 0 упадет). Так как операция уменьшения счетчика может выполняться в тот же такт. Вместо команды inc и test через каждый раз.
Или это потому что в пользовательском режиме ядра, такого случая не может что бы одна команда крутилась N раз?
Какой код должен быть на с++ c# что бы компилятор скомпилировал rep mov связку команд?
Судить о том, что будет выполняться быстрее, в современных процессорах, это гиблое дело, ибо всё зависит от конкретной модели, конкретного случая и может даже от цены фьючерсов на титан.
Например по тому, что компиляторы сейчас умные и они вовсю используют XMM-регистры, которые копируют по 128бит за раз. REP удобен только в ручном написание кода, потому что понятен и меньше кода, но не так оптимально.
Инструкция которую не нужно читать из памяти, но которая сама лезет в память дважды на каждом цикле своего выполнения не может быть "в миллиард раз быстрее" других реализаций той же логики.