Это не исполнение в этом проблема; Это только обратная запись, которая предотвращает выполнение этих инструкций не по порядку (если вы не делали переименование регистра).
Окончательный результат в R2
(как видно из других более поздних инструкций после этой пары) должен соответствовать порядку программы, поэтому он должен иметь результат 2-й инструкции.
Это , почему современные центральные исполнительные процессоры не по порядку используют переименование регистров (алгоритм Томасуло) , а не просто табло: это полностью сводит на нет опасности WAW и WAR. См. Первый раздел моего ответа на Почему mulss занимает только 3 цикла в Haswell, в отличие от таблиц инструкций Агнера? для другого теоретического объяснения того, как переименование регистров делает повторное использование одного и того же регистра для разных результатов не проблема.
Также см. Деоптимизация программы для конвейера в процессорах семейства Intel Sandybridge , где я также объясняю, что антизависимости WAW и WAR не могут вызывать зависания на современных исполнительных процессорах не в порядке.
При записи в память (вместо регистров) буфер хранилища скрывает опасности WAW и WAR.