.data
msg:
.asciz "Hello, world!\n"
.extern _printf
.text
.global _main
_main:
movl %esp, %ebp
pushl $msg # 壓棧,首先,因爲編譯環境是32位,推棧前esp先減少2字(DWORD類型=4字節),然後再將msg指向的內容放入棧中,相當於就是指到這個新位置)
call _printf # 調用系統函數
popl %eax # 出棧,首先將esp指向的元素移入eax裏,然後將esp+2字,恢復到原來的指向
#addl $4, %esp # esp寄存器是存放棧頂指針的,將esp+4字節後,恢復到原來的指向,等同於上面的popl操作
xorl %eax, %eax # 通過異或自身 來清0,相當於return 0
ret
x86彙編入門第一節:用GAS語法打印HelloWorld
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.