2013-02-25 54 views
0

我正在查看一個32x32寄存器文件,包含$ s0- $ s7,$ t0- $ t9,$ zero,$ a0- $ a3,$ v0- $ v1,$ gp,$ fp,$ ra和$在。數組如何存儲在寄存器文件中?

我的問題是如何在這些寄存器文件中存儲數組?它們不僅僅是每個32位寬嗎?

例如,數組A是$ S3的給定的基地址,如果我給指令獲取A [8]:

lw $t0, 32($s3) 

它是如何獲取數據?

回答

1

數組訪問是通過指針(C人們非常熟悉的東西)完成的,所以寄存器只保存數組的基地址。然後,您將8 * 4 = 32個字節添加到該基地址以獲取第8個元素的地址,並最終取消該指針(意即查看該地址處的內容)以獲取該值(使用lw指令)。

您已經表明,該指令這個C代碼翻譯:

t0 = *(s3 + 8) // same as s3[8] 
+0

所以$ S3不持有A [0]的價值,但持有A [0]數據存儲器的地址? – James 2013-02-25 20:42:13

+0

@詹姆斯就是這樣 – BlackBear 2013-02-25 20:42:39

相關問題