[root@localhost asm1]# cat add.s
.file "add.s"
.text
.globl add
.type add, @function
add:
pushq %rbp
movq %rsp, %rbp
movl %edi, -4(%rbp)
movl %esi, -8(%rbp)
movl -8(%rbp), %eax
movl -4(%rbp), %edx
addl %edx, %eax
popq %rbp
ret
.globl main
.type main, @function
main:
pushq %rbp
movq %rsp, %rbp
subq $16, %rsp
movl $10, -4(%rbp)
movl $20, -8(%rbp)
movl -8(%rbp), %edx
movl -4(%rbp), %eax
movl %edx, %esi
movl %eax, %edi
call add
movl %eax, -12(%rbp)
movl -12(%rbp), %eax
leave
ret
[root@localhost asm1]#
编译运行:
[root@localhost asm1]# gcc -s ./add.s -o add
[root@localhost asm1]# ./add
[root@localhost asm1]# echo $?
30