Mips 计算机体系结构说明家庭作业

Mips 计算机体系结构说明家庭作业,mips,computer-science,cpu-architecture,machine-instruction,Mips,Computer Science,Cpu Architecture,Machine Instruction,我不希望得到详细的答案,因为这只是一个家庭作业,我不想浪费每个人的时间 我有一个关于MIPS代码的问题 我们有'M'机器,它是一种内存体系结构,具有以下指令: 'mmul.d a,b,c' 它采用b和c处的64位浮点值,并存储在内存地址a处 然后,我们有一个较小的嵌入式'J'机器,它将'M'机器指令转换为一个或多个'J'机器指令: lw r1,a // load 32 bits starting at 'a' sw r1,a // store 32 bits

我不希望得到详细的答案,因为这只是一个家庭作业,我不想浪费每个人的时间

我有一个关于MIPS代码的问题

我们有
'M'
机器,它是一种内存体系结构,具有以下指令:

'mmul.d a,b,c'
它采用
b
c
处的64位浮点值,并存储在内存地址
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.da,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位如何相互通信的文档和/或解释,这将非常有用。

J似乎无法从内存加载64位浮点寄存器,因此您需要使用中间32位整数寄存器来解决此限制。可能应该与此类似:

lw r1, b
lw r2, b + 4
pack f1, r1, r2

lw r1, c
lw r2, c + 4
pack f2, r1, r2

mul.d f0, f1, f2

unpack f0, r1, r2
sw r1, a
sw r1, a + 4