Intel汇编-函数使用堆栈传递数据
# An example of using stack variables in functions. (函数使用堆栈传递数据)
#
# 计算给定半径的圆的面积
#
.section .data
precision:
.byte 0x7f, 0x00
.section .bss
.lcomm result, 4
.section .text
.globl main
main:
nop
finit
fldcw precision
push $10
call area
addl $4, %esp
movl %eax, result
push $2
call area
addl $4, %esp
movl %eax, result
push $120
call area
addl $4, %esp
movl %eax, result
movl $1, %eax
movl $0, %ebx
.type area, @function
area:
push %ebp
movl %esp, %ebp
subl $4, %esp
fldpi
filds 8(%ebp)
fmul %st(0), %st(0)
fmulp %st(0), %st(1)
fstps -4(%ebp)
movl -4(%ebp), %eax
movl %ebp, %esp
pop %ebp
ret
# gcc -g -o 03 03-stack.s -m32
#