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

GAS Intel语法下mov rdi, offset:symbol指令汇编报错如何解决?

问题原因

报错由个人设备与学校设备的GNU汇编器(GAS,GCC默认调用的汇编后端)版本差异导致:

  • 2.31及以上版本的Binutils(GAS所属的工具集)新增支持offset:带冒号的Intel语法偏移量写法,和MASM语法对齐
  • 你本地的Binutils版本低于2.31,无法识别offset后的冒号,因此抛出第6行表达式错误、message为无效冗余内容的报错

解决方案

两种修复方案可任选:

方案一:修改代码兼容旧版本汇编器(推荐,无环境依赖问题)

将代码第6行的mov rdi, offset:message修改为mov rdi, offset message,去掉offset后的冒号即可,该写法新旧版本汇编器均支持。
修改后的完整可运行代码如下:

.intel_syntax noprefix
.global main

.text
main:
    mov     rdi, offset message
    call    puts
    mov     rax, 0
    ret

message:
    .asciz "Hello, world!"

修改后执行原编译命令gcc -o hello_intel hello_intel.S即可正常编译运行。

方案二:升级本地Binutils版本

将你个人设备的Binutils工具集升级到2.31及以上版本,无需修改代码即可直接编译原示例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 18:06:00