gpt4 book ai didi

c - ARM 上的 double2unsigned(vcvt 指令)

转载 作者:太空宇宙 更新时间:2023-11-04 02:26:09 25 4
gpt4 key购买 nike

<分区>

我有简单的代码。在 x86(visual studio)上,最后两行代码的 res 是相同的。

short res;
double CONST = 32768.0
double d=-0.85;
res = ( unsigned short)( d * CONST );
res = ( short)( d * CONST );

在 ARM(GCC) 上转换为无符号得到不正确的结果。

short dres;
double CONST = 32768.0
double d=-0.85;
dres = ( unsigned short )( d * CONST );
//007db5c4: vldr d17, [pc, #76]
//007db5c8: vldr d16, [r11, #-20]
//007db5cc: vmul.f64 d7, d17, d16 ;d7=={u8 = {51, 51, 51, 51, 51, 51, 219, 192}, u16 = {13107, 13107, 13107, 49371}, u32 = {858993459, 3235590963}, u64 = 13896757370177139507, f32 = {4.17232506e-08, -6.8499999}, f64 = -27852.799999999999}
//007db5d0: vcvt.u32.f64 s15, d7 ;s15==0 !!!!!!!!!!!!!!!!!!!!! incorrect
//007db5d4: vstr s15, [r11, #-48]
//007db5d8: ldrh r3, [r11, #-48]
//007db5dc: uxth r3, r3
//007db5e0: strh r3, [r11, #-6]
dres = ( short )( d * CONST );
//007db5e4: vldr d17, [pc, #44]
//007db5e8: vldr d16, [r11, #-20]
//007db5ec: vmul.f64 d16, d17, d16
//007db5f0: vcvt.s32.f64 s15, d16 ;s15==-nan(0x7f9334)
//007db5f4: vmov r3, s15
//007db5f8: strh r3, [r11, #-6]

这是正确的行为还是错误?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com