Efficient Algorithm for Function Composition in Assembly Code
This solution provides efficient assembly code for composing functions through examples and explanations in the ECEN350 course recitation.
Efficient Algorithm for Function Composition in Assembly Code
E N D
Presentation Transcript
Solution to Problem2.19.4 Recitation #1 (Week 2) ECEN350 Prof. Choi
a)f(a,b,c)=func(func(a,b),c) f: addi $sp,$sp,–8 sw$ra,4($sp) sw$s0,0($sp) move $s0,$a2 jalfunc #v0=func($a0,$a1)=func(a,b) move $a0,$v0 # $a0= func(a,b) move $a1,$s0 # $a1=c jalfunc # v0=func($a0,$a1)=func($v0,c)=func(func(a,b),c) lw$ra,4($sp) lw$s0,0($sp) addi$sp,$sp,8 jr$ra
b) f(a,b,c)=func(a,b)+func(b,c) f: addi $sp,$sp,–12 sw$ra,8($sp) sw$s1,4($sp) sw$s0,0($sp) move $s0,$a1 move $s1,$a2 jalfunc # $v0=func($a0,$a1)=func(a,b) move $a0,$s0 # $a0=b move $a1,$s1 #$a1=c move $s0,$v0 # $s0=$v0=func(a,b) jalfunc; #$v0=func($a0,$a1)=func(b,c) add $v0,$v0,$s0 #$v0=func(a,b)+func(b,c) lw$ra,8($sp) lw$s1,4($sp) lw$s0,0($sp) addi$sp,$sp,12 jrra