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'的主要内容,如果未能解决你的问题,请参考以下文章
GCC 内联汇编错误:变量 '%al' 的 asm 说明符与 asm clobber 列表冲突