วันเสาร์ที่ 5 กุมภาพันธ์ พ.ศ. 2554

MIPS programming: Write MIPS programs

1.Translate a C function to calculate a factorial value below into a MIPS
assembly code.

int factorial( int n ){
int f = 1;
if(n == 0) return 1;
do{
f = f * n;
n--;
while( n != 0 );
return f;
}

----------------------
fac:
add $a0 , $zero , 5    # กำหนดค่า parameter ตัวแรก ให้เป็น 5
addi $v0 , $zero , 1
jal loop
jal exit
loop:
mul $v0 , $v0 , $a0 # เก็บค่าของตัวแปรที่ return จากฟังก์ชันให้เป็น $v0
addi $a0 , $a0 , -1
bne $a0 , $zero , loop
jr $ra
exit:


----------------------------
2. Translate a C function to calculate a factorial value below into a MIPS
assembly code.

int fact( int n ){
if ( n == 0 ) return 1;
else return n * fact( n – 1 );
}
-----------------------------
addi $a0,$a0,5
jal factorial
li   $v0, 10         
syscall   
factorial:
addi $sp,$sp,-8
sw $a0,4($sp)
sw $ra,0($sp)
beq $a0,$zero,F1

sub $a0,$a0,1
jal factorial

lw $a0,4($sp)
add $a1,$v0,$zero
jal multiply

lw $ra,0($sp)
lw $a0,4($sp)
add $sp,$sp,8
jr $ra

F1:
addi $v0,$zero,1
add $sp,$sp,8
jr $ra

multiply:
add $t0,$zero,$zero
n_loop:
beq $a1,$zero,m_eol
add $t0,$t0,$a0
subi $a1,$a1,1
j n_loop
m_eol:
add $v0,$t0,$zero
jr $ra




-------------------

ไม่มีความคิดเห็น:

แสดงความคิดเห็น