ARM汇编调用带float参数函数输出异常的问题排查求助
ARM汇编与C混合编程中printf("%a")输出错误问题排查
场景与代码
- 基于ARMv7-A架构编写C与汇编混合程序,汇编代码(mys.s)实现计算
1.1*1.1*3.1415927410125732,并调用C函数putfloat输出结果。 - C函数
putfloat定义(myc.c):
void putfloat(float a) { printf("%a", a); }
- 编译命令(gcc 10.2.1):
gcc -march=armv7-a -mfloat-abi=hard myc.c mys.s -g -o run
问题现象
- 预期输出:
0x1.e691e6p+1 - 实际输出:
0x1.00000420a3ae7p+513 - GDB调试信息:执行
BL putfloat指令前,S0寄存器值为3.80132747(对应正确计算结果),但调用printf后输出异常。
待排查疑问
是否因未遵循ARM调用标准导致该问题?或是存在其他影响因素?
内容的提问来源于stack exchange,提问作者Xshell
相关产品推荐
相关产品推荐

