sky14285 2022-03-08 10:41 采纳率: 0%
浏览 28

GCC内嵌汇编 SSAT饱和加移位指令的写法的问题

问题遇到的现象和发生背景

在STM32CubeIDE中,嵌套饱和运算指令SSAT,但一直编译不通过

问题相关代码,请勿粘贴截图

在c语言代码中嵌套如下的写法
asm ("ssat %0, %1, %2, %3" : "=r" (calibFactor) : "I" (16), "r" (calibFactor), "I" (14));
从keil中移植过来的源代码是 __asm ("SSAT " #calibFactor ", #16, " #calibFactor ", ASR #14" )

运行结果及报错内容

编译报错是 Error: shift expression expected -- `ssat ip,#16,ip,#14'

我的解答思路和尝试过的方法

因为STM32CubeIDE自带的是GCC编译器,但没有找到正确的内嵌写法
假设只做饱和运算__asm__ ("ssat %0, %1, %2" : "=r" (calibFactor) : "I" (16), "r" (calibFactor)); 编译能够通过

我想要达到的结果

我猜测是加入了移位字段后出现了问题,请问各位,该饱和指令在GCC下面正确的写法是什么?

  • 写回答

1条回答 默认 最新

报告相同问题?

问题事件

  • 创建了问题 3月8日