음 .. 몇 가지 시도를했지만 작동하지 않습니다.어셈블리에서 printf를 호출하는 중 - 작동하지 않습니다.
_hello
의 주소를 printf()
기능에 맞게 올바르게 푸시하려면 어떻게해야합니까? 나는이 프로그램은 단순히 충돌하는 것을 의미한다 "이 작동하지 않음"으로
.intel_syntax noprefix
.extern printf
.global printf2
_hello: .ascii "Hello World!\0"
printf2:
push ebp
mov ebp, esp
push _hello
call _printf
pop ebp
ret
.
'_printf '를 호출 한 후'add esp, 4'가 누락되지 않았습니까? – Michael
@ 마이클 : 그렇습니다.하지만 핵심 문제는 아닙니다. –
'_printf'를 호출 한 후 스택을 올바르게 정리하지 않았습니다. 따라서'pop ebp'는 유효하지 않은 값을'ebp '로 이동시킵니다. –