簡體   English   中英

為什么在MIPs Assembly中使用sll等轉移一下?

[英]Why shift a bit using sll and such in MIPs Assembly?

所以我理解命令sll正在做什么,因為我讀到這個並且它幾乎只是將剩下的所有位移位1.我只是想知道為什么我會這樣做?

我有一個來自類的作業,有一個例子......其中$ s6和$ s7是數組的基地址,而$ s1 / $ s2只是一些變量。

sll $t0, $s0, 2
add $t0, $s6, $t0
sll $t1, $s1, 2
add $t1, $s7, $t1
...

為什么要轉移一下? 它用簡單的術語做什么? 我首先想到它與索引數組中的變量有關...但我不確定。

它幾乎只是將剩下的所有位移1

他們展示的例子是1位移位。 sll指令不僅限於移位1位; 您可以指定0..31范圍內的移位量(0移位似乎無用,但SLL $zero, $zero, 0用於在MIPS上編碼NOP )。

N比特的邏輯左移可以用作乘以2^N (2到N的冪)的快速均值。 因此指令sll $t0, $s0, 2$s0乘以4(2 ^ 2)並寫回$t0 這在例如縮放在訪問字陣列時使用的偏移時是有用的。

將數字向左移位與將該數字乘以2相同。更一般地,向左移位數字N位與將該數字乘以2 ^ N相同。

當數組的每個元素的大小為2的冪時,它被廣泛用於計算數組的偏移量。

我在程序中看到在$ s0和$ s2寄存器上應用了簡單的sll! 在指令sll $ t0,$ s0,2中,寄存器$ s0的值將乘以4.您可以在Shift左側邏輯示例中清除更多

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM