Почему компиляторы не используют инструкции повторения REP movs?

Компиляторы не используют инструкции повторения REP movs из-за нескольких причин.

Во-первых, инструкция REP movs предназначена для копирования блоков памяти, и она довольно ограничена в своем функционале. Она просто копирует данные из одной области памяти в другую. Все операции связанные с обработкой данных и контролем выполнения процесса должны быть реализованы программно с помощью циклов или других инструкций.

Во-вторых, использование REP movs может быть неэффективно в современных компьютерных системах. Эта инструкция предназначена для процессоров с пред-суперскалярной архитектурой, в которых отсутствуют кэши данных. В таких системах использование REP movs может увеличить время выполнения программы из-за больших задержек, связанных с обращением к оперативной памяти.

Современные компиляторы оптимизируют код, используя более эффективные способы обработки данных. Они могут выявить и удалить избыточные операции копирования данных, используя специальные алгоритмы оптимизации. Кроме того, они могут использовать параллелизм и векторные инструкции для ускорения обработки данных.

Использование циклов и других управляющих структур языка программирования позволяет компилятору гибко управлять ходом выполнения программы и реализовать сложные алгоритмы. Компиляторы могут применять различные оптимизации, такие как удаление мертвого кода, перемещение инструкций для улучшения расположения данных в кэше и другие, чтобы улучшить производительность программы.

Итак, компиляторы не используют инструкции повторения REP movs из-за их ограниченного функционала, неэффективности на современных системах и возможности применения более эффективных оптимизаций при помощи других инструкций и управляющих структур языка программирования.