避免常见扩展内联汇编错误的规则

主要观点:GCC 和 Clang 内联汇编是高低级编程语言的接口,微妙且危险,很多人不知不觉陷入陷阱,asm关键字类似 C 和 C++的unsafe关键字,多数内联汇编教程有基本错误且示例大多不正确。
关键信息:重点是扩展汇编,非基本汇编;应尽量避免内联汇编,现代编译器有内建函数可替代;内联汇编几乎总是需用volatile;通常需要内存破坏符"memory";不能修改输入约束;不能从内联汇编中调用函数;不要定义绝对汇编标签。
重要细节:内联汇编陷阱多,常见错误包括未用volatile、缺少"memory"等;系统调用可在内联汇编中使用;可通过%=让编译器生成唯一标签或使用汇编器的本地标签功能;可通过搜索“内联汇编教程”并应用 6 条规则来练习发现缺陷。

阅读 8
0 条评论