"sw $fp($sp)" 在 MIPS 中是什么意思

what is "sw $fp($sp)" mean in MIPS

我在计算机组织中有一个任务 class。 这是 MIPS

中阶乘递归代码的一部分
main:
                                # prolog        
     sub     $sp, $sp, 4       
     sw      $_ra_, ($sp)
     sub     $sp, $sp, 4       
     sw      $_fp_, ($sp)

     sub     $fp, $sp, _8_     
     move    $sp, $fp 

在这段代码中,我知道 "sub $sp, $sp, 4" 的意思,store $ra 并将帧指针存储在 $ra register.However 下,我无法理解代码 "sw $fp,($sp)" 、 "sub $fp, $sp,8" 和 "move $sp, $fp"。

  1. 对于指令 "sw $fp,($sp)" sw 表示存储字,您正在将一个字存储在 memory.Basically 您正在将 $fp 的内容发送到寄存器 $sp 中包含的内存地址,偏移量为零.
  2. 对于指令 "sub $fp, $sp,8",您从寄存器 $sp 的内容中减去 8,并将结果保存在寄存器 $fp 中。
  3. 对于"move $sp, $fp",您只是将寄存器$fp 的内容移动到寄存器$sp 中。