이 코드 스 니펫이 무한 루프가되는 이유를 누구나 설명 할 수 있습니까?printf 함수로 어셈블리 무한 루프
나는 printf 함수와 관련이 있다고 가정합니다.
q1: .asciz "Hello World\n"
.global main
main:
movq %rsp, %rbp
movq $3, %rcx
jmp bottom
loop:
movq $0, %rax
movq $q1, %rdi
call printf
bottom:
decq %rcx
cmpq $0, %rcx
jne loop
end:
movq $0, %rdi
call exit
당신이 사용하고있는 어셈블러는 무엇입니까? 나는 당신이 내 생각에 어떤 호출 규칙을 사용하고 있는지 확실하지 않습니다. 당신은 printf를 확장하는 libc의 ABI를 오용하고 있습니다. 무한 루프 – DrPrItay
hello.s -o hello.o로 컴파일 중입니다. gcc -o power power.o –
RCX가 https://en.wikipedia.org/wiki/X86_calling_conventions 및 https ://에 따라 삭제되었습니다. /ideone.com/fork/LKBgUL. RCX를 눌러 보존하고 나중에 팝하면 복원 할 수 있습니다. –