Вы, вероятно, скомпилированы без оптимизации (-O).То, что вы видите, является прямым, наивным переводом промежуточного представления.Подобные фрагменты обычно происходят из-за значения, хранящегося в локальной переменной, в этом случае 0xf8 (% rbp) .Затем значение используется сразу после этого, поэтому оно снова загружается в регистр % rax .Оптимизатор обнаружит, что сохранение из% rax только для восстановления обратно в тот же регистр является излишним, и полностью удалит последовательность.Если все этапы оптимизации не пройдены, по крайней мере, глазок обнаружит, что эти две инструкции являются последовательными.
Если у вас действительно включена оптимизация, то это действительно странно, но может быть объяснено, если вы разместите большую(но не слишком большая) последовательность.Все еще есть много случаев, когда генерируется что-то явно неоптимальное, но ничего более вопиющего.