簡體   English   中英

未對齊的負載。 載入 R1 的字的地址是什么?

[英]Unaligned load. What is the address of the word loaded into R1?

有人可以解釋一下寄存器 R2 和 R3 的 OR 如何導致寄存器 R1 的地址值 15?

R5 = 12 
lw R2, 0(R5)
lw R3, 4(R5)
sll R2, R2, 24
srl R3, R3, 8
or R1, R2, R3

顯然應該是這樣的:

R5 = 12 
lw R2, 0(R5) -> [12,13,14,15]
lw R3, 4(R5) ->[16,17,18,19], offset 4 bytes from value stored in R5, i.e. 12
sll R2, R2, 24 ->[15,0,0,0], shift left 3 bytes (24/8=3)
srl R3, R3, 8 -> [0,16,17,18], shift left 1 byte
or R1, R2, R3 ->[15,16,17,18], "merge the arrays"

所以這個字從索引或地址值 15 開始。

那些相反的移位 + OR 似乎在 8 字節的單詞對上實現了一個滑動窗口,實現了來自 R5+3 的未對齊加載。

我們將它左移 24 位 = 3 個字節,然后與 `4(R5) 的低 3 個字節合並。

暫無
暫無

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

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