__asm 关键字(注意开头的两个下划线)是 asm 关键字的同义字。 在使用 -pedantic 时,编译器将针对 asm 关键字的使用发出警告。请使用 __asm 避免这些警告。__asm 语句采用以下形式:
__asm("string");
其中 string 是有效的汇编语言语句。
该语句将给定的汇编程序文本直接发送到汇编文件。在文件作用域(而不是函数作用域)声明的基本 asm 语句称为全局 asm 语句。其他编译器将其称为顶级 asm 语句。
全局 asm 语句以其指定顺序发出,保留相对于彼此的顺序,并保持相对于前后函数的位置。
在较高优化级别中,编译器可能会删除已确定不被引用的函数。由于编译器得出从全局汇编语言语句中引用了哪些函数的结果,因此可能会无意中删除这些函数。
请注意,那些提供模板及操作数规范的扩展 asm 语句不允许作为全局语句。__asm 和 __asm__ 是 asm 关键字的同义字,可以互换使用。
指定特定于体系结构的指令时,可能需要指定正确的 -xarch 值以避免发生编译错误。