[Assembly Language] 정수 연산 프로그램(SPARC)
다음 정수 연산을 수행하는 SPARC 어셈블리 프로그램을 작성하시오.
◼ result = 𝐴 + 𝐵 × 𝐶 − 𝐷 × 16 ÷ 𝐸 𝑚𝑜𝑑 𝐹 ◼
‘mod’ 는 나머지 연산 (C 언어의 경우 % 연산자)
1. 소스코드 :
.global mainmain: save %sp, -96, %sp
add %i0, %i1, %l0 ! 덧셈 연산 실시 후 l0에 저장(A+B)
sub %i2, %i3, %l1 ! 뺄셈 연산 실시 후 l1에 저장(C-D)
mov %l1, %o0 ! 곱셈 연산을 위한 이동
mov 16, %o1 ! 곱셈 연산을 위해 o1에 16 이동
call .mul ! 곱셈 서브루틴 호출(C-D)*16
nop
mov 16, %o1 ! no operation
mov %l0, %o1 ! 곱셈 연산을 위해 l0값을 o1로 이동
call .mul ! 곱셈 연산(A+B)*(C-D)*16
nop
mov %i4, %o1 ! 나눗셈 연산을 위한 이동
call .div ! 나눗셈 서브루틴 호출((A+B)*(C-D)*16))/E
nop
mov %i5, %o1
call .rem ! mod 서브루틴 호출(((A+B)*(C-D)*16))/E)%F
nop
mov %o0, %i0 ! 연산결과가 저장되어있는 o0에서 i0로 이동
ret
restore
댓글
댓글 쓰기