嗯..我已经尝试过一些事情,但我无法解决这个问题。
如何正确推送_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
" 无效"我的意思是该程序只是崩溃。
答案 0 :(得分:2)
我无法识别您使用的操作系统。
对于适用于Windows的MinGW-GAS,这是正确的:
.intel_syntax noprefix
.extern _printf
.global _printf2
_hello: .ascii "Hello World!\0"
_printf2:
push ebp
mov ebp, esp
push OFFSET _hello
call _printf
add esp, 4
pop ebp
ret
这个适用于Linux-GAS:
.intel_syntax noprefix
.extern printf
.global printf2
_hello: .ascii "Hello World!\0"
printf2:
push ebp
mov ebp, esp
push OFFSET _hello
call printf
add esp, 4
pop ebp
ret
考虑下划线的不同用法!