GCC 内联汇编错误:表达式后出现垃圾 `(%ebp)+4'

Posted

技术标签:

【中文标题】GCC 内联汇编错误:表达式后出现垃圾 `(%ebp)+4\'【英文标题】:GCC inline assembly error: junk `(%ebp)+4' after expressionGCC 内联汇编错误:表达式后出现垃圾 `(%ebp)+4' 【发布时间】:2011-06-02 06:08:20 【问题描述】:

我正在尝试编译在 MSVC 中工作的内联程序集(使用 -fasm-blocks),但 GCC 给了我 junk `(%ebp)+4' after expression 错误...为什么它不接受语法,我应该如何解决这个问题?

uint64_t _tmp = 100;

_asm

     //_tmp value may be changed
     //...
     cmp dword ptr _tmp, 100 // Ok
     jnae temp
     cmp dword ptr _tmp + 4, 50 // It seems GCC doesn't want to accept _tmp + 4
     jnae temp
     //...
     temp:
;

【问题讨论】:

【参考方案1】:

你应该把它改成:

cmp dword ptr [_tmp + 4], 50

【讨论】:

谢谢,伙计!这给了我“寻址模式太复杂,将消耗额外的寄存器”警告,但至少它编译:)

以上是关于GCC 内联汇编错误:表达式后出现垃圾 `(%ebp)+4'的主要内容,如果未能解决你的问题,请参考以下文章

gnu 内联汇编错误

扩展内联汇编 gcc - 计算二次公式根

GCC 内联汇编错误:变量 '%al' 的 asm 说明符与 asm clobber 列表冲突

GCC 内联汇编中的标签

程序集,1 个文件中有两个函数,在表达式后出现错误:垃圾 `(%ebp)'

GCC 内联汇编的副作用