본문 바로가기

MIPS/공부

레지스터에 값을 저장 후 주어진 연산을 수행하는 프로그램

식:

int leaf_example (int g, int h, int i, int j)
{
   int f;
   f = (g - h) + (i - j);
   return f;
}

· g, h, i, j의 값은 각각 3, 10, 15, 7이며 $a0, $a1, $a2, $a3레지스터에 입력되어야함. 나와야할 결과는 1.

 

.data
msg: .asciiz"The final result is "

.globl main
.text
main:
	li $a0,3
	li $a1,10
	li $a2,15
	li $a3,7
	
	jal leaf_example
	
	li $v0, 4     
            la $a0, msg  
            syscall    

	li $v0,1
	add $a0,$v0,$zero
	syscall
	
	li $v0, 10
	syscall

leaf_example:
	addi $sp,$sp,-12
	sw  $t1,8($sp)
	sw  $s0,4($sp)
	sw  $s0,0($sp)
	sub $t0,$a0,$a1
	sub $t1,$a2,$a3
	add $s0,$t0,$t1

	add $v0,$s0,$zero

	lw $s0,0($sp)
	lw $t0,4($sp)
	lw $t1,8($sp)
	addi $sp,$sp,12

	jr $ra