double强制类型转换int64_t的结果为0问题
发布日期:2021-06-30 10:11:32
浏览次数:4
分类:技术文章
本文共 647 字,大约阅读时间需要 2 分钟。
armv71 gcc 4.6.3 内核态xenomai
测试代码1:
int64_t func(){ double a; ... return (int64_t)a;}
返回值一直都是0.
改为:
int64_t func(){ double a; ... return (int32_t)a;}
返回值正确。
同样是32位,x86下使用却都是正确的。
分析
这里尝试分析一下汇编代码:
int64_t强转部分代码:
9970: ee32 0b01 vadd.f64 d0, d2, d1 ;d0 := d2 + d1 9974: f001 f9a0 bl acb8 <__aeabi_d2lz> ; 9978: 6320 str r0, [r4, #48] ; 0x30 ; [r4, #48] := r0
int32_t强转部分代码:
996a: ee32 0b01 vadd.f64 d0, d2, d1 996e: eebd 0bc0 vcvt.s32.f64 s0, d0 9972: ed80 0a0c vstr s0, [r0, #48] ; 0x30
这里vcvt.s32.f64是VFP指令,使用的是浮点硬件单元FPU进行计算处理的,其中并不包含s64。
而__aeabi_d2lz为双精度到整型C型转换,是调用软件函数库进行处理的。
目前猜测是由于__aeabi_d2lz出错?
转载地址:https://islet.blog.csdn.net/article/details/113866003 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月24日 13时34分29秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
学习笔记(40):高并发下的Nginx性能优化实战-nginx命令
2019-04-30
学习笔记(41):高并发下的Nginx性能优化实战-Linux下Nginx的安装(一)
2019-04-30
学习笔记(42):高并发下的Nginx性能优化实战-Nginx配置文件详解
2019-04-30
学习笔记(44):高并发下的Nginx性能优化实战-Nginx配置web应用集群搭建
2019-04-30
学习笔记(45):高并发下的Nginx性能优化实战-Nginx负载均衡(一)
2019-04-30
使用Poco库进行加解密和签名验签
2019-04-30
走进开源代码(一)
2019-04-30
走进开源代码(二)
2019-04-30
[转]深度剖析闪电网络
2019-04-30
听李天飞《大话西游》有感
2019-04-30
走进开源代码(三)
2019-04-30
Linux下开发Qt界面程序时命令行传参数的一个坑
2019-04-30
SourceInsight使用技巧(转)
2019-04-30
QT之旅——post 文件
2019-04-30
树莓派为连接不同Wifi分配固定IP的方法
2019-04-30
[转]Linux 下编译、安装、配置 QT
2019-04-30
新手教学看eMule 0.50a Xtreme 8.0设置
2019-04-30
如何在Linux使用Eclipse + CDT开发C/C++程序?
2019-04-30
Eclipse官网下载页面的Packages 和Developer Builds区别
2019-04-30