/*
* An example of using two FPU registers
*
* 使用浮点数
*/
#include <stdio.h>
int main()
{
float angle = 90;
float radian, cosine, sine;
radian = angle / 180 * 3.14159;
asm("fsincos\n\t"
: "=t"(cosine), "=u"(sine)
: "0"(radian));
printf("The cosine is %f, and the sine is %f\n", cosine, sine);
return 0;
}
// 进一步改写
int main()
{
float radius = 90;
float area;
asm("fild\n\t"
"fimul %1\n\t"
"fldpi\n\t"
"fmul %%st(1), %%st(0)\n\t"
: "=t"(area)
: "m"(radius)
: "%st(1)");
printf("The result is %f\n", area);
return 0;
}