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

Trace32 CMM脚本移位运算符报错求助:符号未找到

Trace32 CMM脚本 "symbol not found" 报错排查

原代码及报错信息

问题代码

&MY_DATA=Data.LONG(ANC:0x300007FF9C8ABC)
&CHECK_VAL=&MY_DATA&(1<<&BITPOS) ;this should work
IF (&CHECK_VAL==(1<<&BITPOS)) ;this should work

报错信息

IF (&CHECK_VAL==(1<<&BITPOS))
^符号未找到

问题原因

Trace32 CMM脚本不支持C语言风格的位运算符(<<、&),脚本会把这些符号识别为未定义的变量/符号,因此抛出"符号未找到"错误。

修正方案

使用Trace32内置的位操作函数替代C风格运算:

  • 左移操作:用SHL(数值, 移位位数)代替数值<<移位位数
  • 按位与操作:用BAND(数值1, 数值2)代替数值1&数值2

修正后的代码

&MY_DATA=Data.LONG(ANC:0x300007FF9C8ABC)
&CHECK_VAL=BAND(&MY_DATA, SHL(1, &BITPOS)) 
IF (&CHECK_VAL==SHL(1, &BITPOS)) 

额外注意事项

  • 确保&BITPOS是已提前定义的数值变量(例如&BITPOS=3),否则也会触发符号未找到错误。
  • Trace32 CMM脚本的运算逻辑依赖内置函数,所有算术、位操作都要使用对应命令,不能直接套用C语言语法。

内容的提问来源于stack exchange,提问作者Priyajit Ghosh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 04:55:57