SPARC 어셈블리 오류 질문있습니다!
글쓴이: msms210 / 작성시간: 금, 2018/10/19 - 7:25오후
fmt1: .asciz " input = "
fmt2: .asciz "%d"
fmt3: .asciz " output = non-prime number ( %d )\n"
fmt4: .asciz " output = prime number\n"
.align 4
.global main, scanf, printf, .rem, .mul, .div
main: save %sp, -104, %sp
set fmt1, %o0
call printf
nop
set fmt2, %o0
add %fp, -4, %o1
call scanf
nop
add %fp, -4, %o0
ld [%o0], %l0
cmp %l0, 0
ble next_r
nop
mov 1, %l1
mov 1, %l3
loop: inc %l1
mov %l0, %o0
call .rem
mov %l1, %o1
mov %o0, %l2
cmp %l2, 0
bne loop
nop
mov %l0, %o0
call .div
mov %l1, %o1
mov %o0, %l2
cmp %l1, %l2
be equal
nop
bg greater
nop
bl less
nop
equal: mov %l3, %o0
call .mul
mov %l1, %o1
ba loop
mov %o0, %l3
less: mov %l3, %o0
call .mul
mov %l1, %o1
mov %o0, %l3
mov %l3, %o0
call .mul
mov %l2, %o1
ba loop
mov %o0, %l3
greater: cmp %l3, 1
bne nprime
nop
ba prime
nop
nprime: set fmt3, %o0
mov %l3, %o1
call printf
nop
ba main
nop
prime: set fmt4, %o0
call printf
nop
ba main
nop
next_r: ret
restore어떤 수 입력받아 소수인지 아닌지 출력하는 어셈블리프로그램구현 입니다.
입력 수가 <=0 이면 next_r로 분기해야하는데 gdb돌려보니 nprime이나 prime에서 머무르다가
다시 main으로 넘어가는데 그 이유를 모르겠습니다 ㅜㅜ
Forums:


만약 저라면 남에게 제 어셈블리를 읽어달라고 부탁할
만약 저라면 남에게 제 어셈블리를 읽어달라고 부탁할 땐 최소한 주석이라도 달아서 드릴 겁니다.
그러다가 어쩌면 스스로 문제를 해결하게 될 수도 있고요.
혹시 해결하셨나요?
저도 비슷한 문제인데 ... 혹시 해결 하셨나요?
https://docs.oracle.com/cd
https://docs.oracle.com/cd/E37838_01/html/E61063/index.html 에서
Feedback 클릭해서 질문해보면 어떨까요?
세벌 https://sebuls.blogspot.kr/
댓글 달기