MIPS сдвиг влево/сдвиг вправо

Я изучаю MIPS и наткнулся на этот фрагмент кода:

or $t0 $z0 $t1
srl $t0 1 $t0
sll $t0 1 $t0
sub $t0 $t0 $t1

меня интересует то, что srl $t0 1 $t0 и sll $t0 1 $t0 это правильно? Как я и думал, это будет srl $t0 $t0 1 со значением n последним.

Кроме того, если $t1 содержит 5, что равно 00000101, когда я делаю srl, а затем sll, я просто получаю что-то вроде этого: 00000101

srl : 00000010
sll : 00000100

так что $t0 теперь будет 4?

и тогда подчасть будет 5-4, что 1?

заранее спасибо


person user3562135    schedule 07.05.2014    source источник


Ответы (1)


Да, обычно он имеет вид:

sll $t0 $t1 n

(или ООО)

и да, вы правы, потому что логические сдвиги вводят 0, поэтому ваши 5 в конечном итоге станут 4

и наконец:

sub $t0 $t0 $t1

эквивалентно t0 = t0 - t1

person Stack Player    schedule 07.05.2014