2013-04-24 31 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的指定地址阅读或写作。

如果您需要进行两次内存访问,则必须使用两条加载/存储指令。

如果您担心源代码大小,则可以将几条指令包装到宏中,然后使用该宏代替。但这是汇编程序特定的。