我不期待详细的答案,因为这只是一个家庭作业,我不想浪费大家的时间。
我有一个关于看起来像 MIPS 代码的问题。
我们的'M'
机器是内存-内存架构,它具有以下指令:
'mmul.d a,b,c'
它采用 64 位浮点值b
和c
存储在内存地址a
。
然后,我们有一个更小的嵌入式'J'
机器,它将'M'
机器的指令翻译成一个或多个'J'
机器指令:
lw r1,a // load 32 bits starting at 'a'
sw r1,a // store 32 bits starting at 'a'
pack f0,r1,r2 // pack two 'r' registers into one 'f' register
unpack f0,r1,r2 // unpack one 'f' register into two 'r' registers
mul.d f0,f2,f4 // perform floating-point multiply f2 * f4
现在我必须编写一个 J-Machine 程序来实现'mmul.d a,b,c'
但我不明白如何将 64 位机器内存地址加载到 32 位寄存器中。我想如果我们可以将内存地址除以 2:
lw r1, b
sw r2, b[0]
sw r3, b[1]
lw r1, c
sw r4, c[0]
sw r5, c[1]
pack f2, r2, r3
pack f4, r4, r5
mul.d f0, f2, f4
首先我不知道加载和存储单词的意义是什么,因为我们可以将一个值存储在带有存储单词的寄存器中。
如果您有任何关于这些 32 位和 64 位如何相互通信的文档和/或解释,那将会很有帮助。