2013-04-24 69 views
-1

例如,我怎麼能做到這樣的事:實現間接尋址,而只有使用絕對(直接)尋址

lw RegisterDestination, (RegisterSource) 

絕對地址?

+1

我不確定我完全理解你的問題。 MIPS上沒有'lw'的絕對尋址模式,除非你的意思是'lw $ somereg,offset($ zero)',在這種情況下,你只能解決32kB的內存頂部和底部問題。你能否詳述一下你試圖達到的目標? – Michael 2013-04-24 15:51:53

+0

是的,如果我不清楚,很抱歉。問題是我如何實現間接尋址(Rdest:= Mem [Mem [Rsrc]])而不實際使用間接尋址,而是使用絕對尋址(Rdest:= Mem [Rsrc],它應該模仿間接尋址。 所以基本上,任務是實現間接尋址的功能,而只使用絕對地址來執行。 – RedPandaFish 2013-04-24 16:00:01

+0

Rtemp = Mem [Rsrc]; Rdest = Mem [Rtemp]? – 2013-04-24 19:59:27

回答

0

MIPS加載和存儲指令(例如lblwsbsw)取存儲器地址僅作爲恆定的組合和的寄存器值並且它們僅執行一個存儲器存取,只要不首先獲得一個地址從內存中讀取或寫入內存。他們在some constant + some register's value的指定地址閱讀或寫作。

如果您需要進行兩次內存訪問,則必須使用兩條加載/存儲指令。

如果您擔心源代碼大小,則可以將幾條指令包裝到宏中,然後使用該宏代替。但這是彙編程序特定的。