2014-09-19 1 views
1

문제 : 현재 $ t0에 저장된 양수의 계승을 계산하는 루프를 작성하고 결과를 $ t1에 4 개의 명령어로 저장하십시오.MIPS에서 팩토리얼을 수행하는 코드는 어떻게 작성합니까?

이것은 내가 지금까지 가지고있는 것입니다. 6 지시 사항에서 작동한다는 것을 확신합니다.

 li $t3, 1 
     move $t1, $t0 
     move $t2, $t0 
LOOP: addi $t2, $t2, -1 
     mul $t1, $t1, $t2 
     bne $t2, $t3, LOOP 

편집. 다음은 솔루션을의

li $t1 1 
LOOP: mul $t1 $t1 $t0 
addi $t0 $t0 -1 
bgez $t0 LOOP 
+0

힌트 : $의 T1 == 1 함께 시작하기 (코드 크기의 측면에서) 더 효율적일 것입니다. '$ t0'와'$ t1' (그리고'$ zero')보다 다른 레지스터를 사용할 필요가 없습니다. 그리고 만약 우리가 엄격 해지기를 원한다면,'li'는 진짜 MIPS 명령이 아닙니다. 이것은 어셈블러가 제공하는 의사 명령어입니다. – Michael

+0

더 엄격하게 말하면'li $ t3,1'은'ori $ t3, $ zero, 1'로 변환되어 하나의 명령입니다 :-) – markgz

답변

0
li $t1 1 
LOOP: mul $t1 $t1 $t0 
addi $t0 $t0 -1 
bgez $t0 LOOP 
관련 문제