#// An example of a C program with a function with #// one input and a return value ##include PRINT_INT=1 PRINT_STR=4 .data str1: .asciiz "Sum 1.. " str2: .asciiz " = " str3: .asciiz "\n" .text main: #int main(void) { main__prologue: push $ra push $s0 main__body: li $s0, 10 #int max = 10; move $a0, $s0 jal sum_to #int result = sum_to(max); move $t0, $v0 li $v0, PRINT_STR la $a0, str1 syscall # printf("Sum 1.. "); li $v0, PRINT_INT move $a0, $s0 syscall # printf("%d", max); li $v0, PRINT_STR la $a0, str2 syscall li $v0, PRINT_INT move $a0, $t0 syscall li $v0, PRINT_STR la $a0, str3 syscall li $v0, 0 main__epilogue: pop $s0 pop $ra jr $ra sum_to: #int sum_to(int n) { # sum in $t1, i in $t0, n in $a0 li $t1, 0 #sum = 0; sum_to_loop_init: li $t0, 1 #i = 1; sum_to_loop_cond: bgt $t0, $a0, sum_to_loop_end # if (i > n) goto sum_to_loop_end; sum_to_loop_body: add $t1, $t1, $t0 #sum = sum + i; sum_to_loop_step: addi $t0, $t0, 1 # i++; b sum_to_loop_cond # goto sum_to_loop_cond; sum_to_loop_end: move $v0, $t1 jr $ra # return sum;