не компиляторная! библиотечная. насколько я понял из либы, там сначала копировались байты чтобы выровнять адреса приёмника и источника (если это было возможно), а потом запускался цикл с LDM/STM на все регистры. ну и под конец копировался невыровненных хвост.
получается, что в тех случаях, когда это можно было - копирование шло с адской оптимизацией. а там где не оптимизировать было низзя - программер сам себе буратина.