.type func1, @function
func1:
.section .data
precision:
.byte 0x7f, 0x00
.section .bss
.lcomm value, 4
.lcomm result, 4
.section .text
.global _start
_start:
nop
finit
fldcw precision #设置FPU为单精度
movl $10, %ebx
call area
movl $2, %ebx
call area
movl $1, %eax
movl $0, %ebx
int $0x80
.type area, @function #求圆面积函数
area:
fldpi #pi值加载到FPU寄存器堆栈
imull %ebx, %ebx #半径的平方
movl %ebx, value
filds value #半径平方值加载到FPU堆栈顶部
fmulp %st(0), %st(1) #圆面积存于st(1),然后弹st(0)出堆栈,最终结果值存于st(0)中
fstps result #结果出栈后存入全局变量result中
movl result, %eax #将结果值放入EAX
ret #函数返回
欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) | Powered by Discuz! X3.2 |