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