我遇到了一个看起来像这样的代码:
asm volatile ( # [...] "movl $1200, %%ecx;" # [...] );
我知道什么是movl $1200, %ecx
在x86中做了什么。 但我很困惑为什么有两个百分号。
GCC内联汇编使用%0,%1,%2等来表示输入和输出操作数。 这意味着你需要使用两个%%来实现真正的寄存器。
查看此howto以获取重要信息。
这取决于
扩展的asm更常用,因为它更强大。
这有助于GCC区分操作数和寄存器。 操作数具有单个%作为前缀。 ‘%%’总是与寄存器一起使用。
以上就是c/c++开发分享双线百分号(%%)在gcc内联汇编中有什么作用?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/562136.html