AI8051U_32_TFPU.LIB 怎么使用?强制转换失效
int i;float b;
b=1.2f;
i = (int)(b);
正常结果应该为i=1;
在项目中添加AI8051U_32_TFPU.LIB后,计算结果为i=0x999A;
这怎么搞?
AI8051U_32_TFPU.LIB 需要使用芯片的硬件运算单元进行计算。
而你使用的是软件模拟仿真(运行过的指令左侧变绿),跟硬件没有关联,自然得不到正常的硬件计算结果。
对于可能涉及浮点数的操作
可能需要启用硬件资源
注意C可能有优化
乘风飞扬 发表于 2026-4-1 16:59
AI8051U_32_TFPU.LIB 需要使用芯片的硬件运算单元进行计算。
而你使用的是软件模拟仿真(运行过的指令左侧 ...
使用硬件仿真结果是0 madsnail 发表于 2026-4-2 08:05
使用硬件仿真结果是0
参照硬件仿真帖子或者视频看看仿真设置是否正确
演示视频:
乘风飞扬 发表于 2026-4-2 10:44
参照硬件仿真帖子或者视频看看仿真设置是否正确
我知道怎么回事了。但是很奇怪,可能是我理解不够
第一种情况
void main(void)
{
int i;
float f;
f=1.2f;
i=(int)(f);
}
结果是f=0,i=0;
第二种情况
int i;
float f;
void main(void)
{
f=1.2f;
i=(int)(f);
}
结果i=1;f=1.2,正常。
不懂为啥。 madsnail 发表于 2026-4-2 11:37
我知道怎么回事了。但是很奇怪,可能是我理解不够
第一种情况
全局变量有分配地址,仿真只能观察全局变量 乘风飞扬 发表于 2026-4-2 11:49
全局变量有分配地址,仿真只能观察全局变量
我又试了试,这样可以
void main(void)
{
int data i;
float data f;
f=1.2f;
i=(int)(f);
}
页:
[1]