找回密码
 立即注册
查看: 163|回复: 7

AI8051U_32_TFPU.LIB 怎么使用?强制转换失效

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2026-04-02 08:05:04

2

主题

8

回帖

46

积分

新手上路

积分
46
发表于 2026-4-1 16:20:28 | 显示全部楼层 |阅读模式
    int i;
        float b;
        b=1.2f;
        i = (int)(b);
正常结果应该为i=1;
在项目中添加AI8051U_32_TFPU.LIB后,计算结果为i=0x999A;
这怎么搞?


截图202604011622218153.jpg
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:712
  • 最近打卡:2026-07-03 09:07:06
已绑定手机

50

主题

2691

回帖

9338

积分

论坛元老

积分
9338
发表于 2026-4-1 16:59:02 | 显示全部楼层
AI8051U_32_TFPU.LIB 需要使用芯片的硬件运算单元进行计算。
而你使用的是软件模拟仿真(运行过的指令左侧变绿),跟硬件没有关联,自然得不到正常的硬件计算结果。

截图202604011658274056.jpg
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:299
  • 最近打卡:2026-07-04 00:01:55
已绑定手机

66

主题

808

回帖

3037

积分

论坛元老

DIY玩家

积分
3037
发表于 2026-4-1 18:34:34 | 显示全部楼层
对于可能涉及浮点数的操作
可能需要启用硬件资源
注意C可能有优化
永怀这学徒心
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2026-04-02 08:05:04

2

主题

8

回帖

46

积分

新手上路

积分
46
发表于 2026-4-2 08:05:04 | 显示全部楼层
乘风*** 发表于 2026-4-1 16:59
AI8051U_32_TFPU.LIB 需要使用芯片的硬件运算单元进行计算。
而你使用的是软件模拟仿真(运行过的指令左侧 ...

使用硬件仿真结果是0
截图202604020805002543.jpg
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:712
  • 最近打卡:2026-07-03 09:07:06
已绑定手机

50

主题

2691

回帖

9338

积分

论坛元老

积分
9338
发表于 2026-4-2 10:44:41 | 显示全部楼层
mads*** 发表于 2026-4-2 08:05
使用硬件仿真结果是0

参照硬件仿真帖子或者视频看看仿真设置是否正确

截图202604021044084135.jpg

演示视频:

回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2026-04-02 08:05:04

2

主题

8

回帖

46

积分

新手上路

积分
46
发表于 2026-4-2 11:37:11 | 显示全部楼层
乘风*** 发表于 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,正常。

不懂为啥。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:712
  • 最近打卡:2026-07-03 09:07:06
已绑定手机

50

主题

2691

回帖

9338

积分

论坛元老

积分
9338
发表于 2026-4-2 11:49:41 | 显示全部楼层
mads*** 发表于 2026-4-2 11:37
我知道怎么回事了。但是很奇怪,可能是我理解不够

第一种情况

全局变量有分配地址,仿真只能观察全局变量
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2026-04-02 08:05:04

2

主题

8

回帖

46

积分

新手上路

积分
46
发表于 2026-4-2 12:02:21 | 显示全部楼层
乘风*** 发表于 2026-4-2 11:49
全局变量有分配地址,仿真只能观察全局变量

我又试了试,这样可以
void main(void)
{
int data i;
float data f;
f=1.2f;
i=(int)(f);
}
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-7-5 15:42 , Processed in 0.073636 second(s), 78 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表