gpt4 book ai didi

mips - 内存地址和寄存器地址是怎么连接的?(AddrConstant MIPS指令)

转载 作者:行者123 更新时间:2023-12-01 00:02:33 25 4
gpt4 key购买 nike

在我的计算机组织类(class)中,我遇到了这些基本的 MIPS 指令:

lw   $to, AddrConstant4($s1)  //&t0 = constant 4
add $s3, $s3, St0 //$s3 = $s3 + $t0 ($t0 == 4)

老师说 $s1是一个寄存器地址,常量 4存放在内存中。

在我看来,内存地址和寄存器地址似乎是脱节的。

我想问一下,计算机是如何从 $s1的寄存器头地址到内存地址的,
或者内存地址和寄存器地址是如何连接的?

最佳答案

lw $t, offset($s) 编码为

1000 11ss ssst tttt iiii iiii iiii iiii

其中 100011为操作码, sssss为基地址寄存器编号, ttttt为目的寄存器编号, iiiiiiiiiiiiiiii为立即有符号偏移量。

lw $t0, 4($s1) 的情况下,这将是:
1000 1110 0010 1000 0000 0000 0000 0100

( $s1 是寄存器 $17 ,即 10001。 $t0 是寄存器 $8 ,即 01000)

当 CPU 遇到这个指令字时,它从位模式中知道这是一个 lw ,因此它形成一个由寄存器编号 sssss 的值 + 立即偏移量(符号扩展)组成的有效地址,从该地址加载一个字,然后将值存储在寄存器编号 ttttt 中。

引用:
MIPS register table
MIPS instruction set reference

关于mips - 内存地址和寄存器地址是怎么连接的?(AddrConstant MIPS指令),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22114853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com