Сдвиг в MIPS по формуле

Я изучаю MIPS и, исходя из процедурного опыта программирования, доказать это сложно. Это вопрос, с которым я столкнулся, когда дело дошло до сдвига. Если есть какие-либо указатели в ответе на это, это будет оценено.

Предположим, что rt является регистром, который содержит целое число. Объясните почему инструкция

sll $rd, $rt, h 

имеет эффективный способ положить

2^h ∗ rt 

в реестре

1 ответ

Это не имеет ничего общего с процедурным программированием, а скорее с двоичными числами.

Некоторые примеры с использованием 8-битных чисел:

Если у вас есть номер 1 (десятичное число) - в двоичном формате, который будет 0000 0001

Если вы сдвигаете влево на 1, вы перемещаете все числа на 1 и вставляете 0 в новое пространство сдвига

Так что теперь у вас будет бинарный 0000 0010 - или же 2 десятичный.

Сдвиг влево другой дает 0000 0100 или же 4 десятичный.

Таким образом, если вы сдвинете оригинальное число 1 влево на 2, у вас будет 4.

Или, глядя на это как шаблон:

1 сдвиг влево = * 2 (2 ^ 1)

2 сдвиг влево = *4 (2^2)

Все из которых выглядит

2^h ∗ rt 
Другие вопросы по тегам