반응형
Mips 어셈블리어로 factorial을 제작하는 코드이다.
Mips 코딩을 하는 동안에는 항상 asm코드 이전에 c코드로 어떻게 구상하는지 주석처리로 공개할 예정이다.
# 아래의 코드와 같은 방식으로 asm코드를 제작
# #include <stdio.h>
#int main()
#{
# int i;
# int n; // 몇팩토리얼?
# int ans = 1;// 처음에는 1로 설정
# scanf("%d",&n);
#
# if(n == 0)
# { printf("1"); }
#
# for(i = 1 ; i <= n ; i ++)
# {
# ans = ans * i;
# }
# printf("%d",ans);
#}
.text
.globl main
main: # int main
# $t1 : i, $t2 : n, $t3 : ans
li $t1,1 # int i = 1;
li $t3,1 # int ans = 1;
li $v0,5 # scanf준비
syscall
move $t2,$v0 # scanf완료한 과정, n값을 입력받아낸다.
loop: # for문
mul $t3, $t3, $t1 # ans = ans * i
beq $t2,0,zerofact # n == 0
beq $t1,$t2,result # i == n ?
addi $t1, $t1, 1 # i = i + 1;
j loop # 다시 루프문으로
result:
li $v0,1 # printf 준비
move $a0,$t3 # printf 과정, 결과값을 넘겨준다
syscall # 출력
li $v0,10 # end
syscall
zerofact:
li $v0,1
addi $t2,$t2,1
move $a0,$t2
syscall
반응형
'Applied > Assembly' 카테고리의 다른 글
[Mips Code]stack기반 지역변수 설정 및 함수 콜 (0) | 2016.03.12 |
---|---|
[Mips Code]factorial 만들기 (재귀형식, jar 명령어) (0) | 2016.03.09 |
[Mips Code]factorial 만들기 (재귀형식, j 명령어) (0) | 2016.03.09 |
[Mips Code]두 수 덧셈 하기 (0) | 2016.03.09 |
[Mips Code]두 수 뺄셈 하기 (0) | 2016.03.09 |