公式为T =2.01√(l) 该程序将使用上面的公式来计算摆的周期。
我需要使用浮点堆栈来进行计算。 当我尝试它时,出现错误提示 “ lab2.2.cpp:17:3:错误:未定义的命名操作数'y' );“
#include<stdio.h>
using namespace std;
int calc(double x)
{
double y = 2.01;
double z;
asm
(
" fldl %[x] \n" //load x onto floating point stack
" fld %%st \n" //duplicate value on top of fp stack
" fsqrt \n" //square root st(0)
" fmul %[y] \n" //multiply by y
" fstpl %[z] \n"
: [z] "=m" (z)
: [x] "m" (x)
);
return z;
}
int main()
{
double l, t;
printf("Enter the length of pendulum: ");
scanf("%f", &l);
t = calc(l);
printf("The period of a pendulum is %f\n", t);
}
如果可能的话,我也想简短地解释一下st(0)和st(1)代表什么。