Сдвиг в 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