You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 19:22:03