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

GNU Assembler .print如何输出表达式求值结果

让GAS .print 指令输出表达式计算值的正确方案

未拿到预期输出的核心原因是没有正确使用.altmacro模式下的%expr语法:

  • 开启.altmacro后,必须在需要求值的表达式、自定义符号前加%前缀,汇编器才会先完成表达式求值,再将结果转为字符串传入.print
  • 缺省%前缀时,汇编器只会对标识符做普通宏替换,你用LOCAL定义的标签会被替换为内部生成的.LLxxxx格式临时符号,也就是你之前看到的异常输出。

最简可运行示例

不需要封装宏,开启.altmacro后直接用%前缀引导表达式即可:

.altmacro
.print "Hello"
.print %1+2

汇编时的输出完全匹配预期:

Hello
3

修正你的宏测试代码

原有宏逻辑存在两个问题:一是将符号名写在了双引号内(引号内内容会被识别为普通字符串直接输出,不会触发替换/求值),二是引用求值符号时未加%前缀,修正后代码如下:

.altmacro

.macro myMacro
  LOCAL myLabel
  .set myLabel, 1+2
  .print %myLabel
.endm

myMacro

运行修正后的代码会直接输出计算结果3,不会再打印内部临时标签名。

使用注意点

  • %expr转义规则仅在.altmacro模式下生效,必须在使用该语法前通过.altmacro指令开启对应模式
  • 带%的求值表达式不要放在双引号内,避免被识别为普通字符串跳过求值逻辑
  • 包含多步运算的复杂表达式建议用圆括号包裹明确运算顺序,例如%(2 * (3 + 5)),避免因运算优先级规则导致求值结果不符合预期

内容的提问来源于stack exchange,提问作者Citra Dewi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:54:21