计算机组成原理与接口技术 基于mips架构_[计算机组成原理] 一个MIPS演示

0035e76fdd07b4267a343fc43e5463ed.png

最近在学MIPS指令,C中简单的3行递归,用MIPS表示的过程真的很复杂,所以我就做了一个演示,帮助自己和大家更好的理解计算机硬件是如何完成一个递归的过程的

首先看这个简短的C代码:

int fact (int n)
{
    if(n<1) return (1);
    else return (n*fact(n-1));
}

接下来是MIPS指令

fact:
    addi  $sp, $sp, -8
    sw     $ra, 4($sp)
    sw     $a0, 0($sp)

slti    $t0, $a0, 1    //   (n<1?)
beq  $t0,$zero, L1     //n>-1, go to L1

addi $v0,$zero,1  //return 1
addi $sp,$sp,8     //pop 2 items
jr      $ra

L1:
    addi $a0,$a0,-1
    jal   fact
 
lw    $a0,0($sp)
lw    $ra,4($sp)
addi $sp,$sp,8

mul $v0,$a0,$v0

jr  $ra

整个过程是如果在计算机内部演绎的呢?

c9a4405c20236905f88910225a80865b.png

053aae2c7d71dfdd07fcba879682454d.png

8a1b8586933ebc14c4be67e90c120ba1.png

a1d3795489fd43d075638aa4c159e984.png

a9add8cf29a4e6ab557790e7f359905e.png

7faa5dc05d8f6884ad8181382129462a.png

6c4d01aeb61659e5b607694668e6de7e.png

fc055ad3d7952c9a19a77170efb57e7d.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值