Во многих реализациях MIPS эти операции будут компилироваться в одну и ту же инструкцию, потому что обычно "mov $ a, $ b" - это идиома для or $a, $b, $0
, а li $r, x
- сокращение для ori $r, $0, x
:
move $t0, $0
li $t0, 0
, и оба они будут происходить в одном и том же конвейере, будучи архитектурно эквивалентными:
xor $t0, $t0, $t0
and $t0, $t0, $0
, и в каждой реализации RISC, с которой я когда-либо работал, add находится в той же трубе, что и xor /и / ни / и т.д..
По сути, все это относится к реализации конкретного чипа, но все они должны быть однократными.Если чип вышел из строя, li
или and x, $0, $0
могут быть самыми быстрыми, поскольку они минимизируют ложные зависимости от других регистров.