杂记:GCC内联汇编
Author: retrhelo Date: 2020.12.13 转载请注明出处 注意,本文仅基于GCC编译器,不确认是否在其他编译器环境下有效。 1. 使用asm()语句在C语言中嵌入汇编代码 我们可以使用 asm() 语句或是 __asm__() 语句来嵌入汇编代码。通常来说这两者的用法是相同的。其使用方法如下所示 asm ( "assembly code" : output operands /* optional */ : input operands /* optional */ : list of clobbered registers /* optional */ ); 1.1 Assembly Code(汇编代码) 这一部分用于填入所要执行的汇编代码,通常按照C风格字符串的格式填入,在不同的语句之间要填入 \n 作为换行符。 1.2 Outputs Operands(输出操作数) 这一部分视具体情况而言是可选的。通常使用形如 "=r" (var) 的形式编写代码,以将寄存器和变量联系起来。其中, r 可以使用具体的字符来指定所使用的寄存器,其规则如下表所示 | r | Registers | | :------------: | :------------: | | a | %eax, %ax, %al | | b | %ebx, %bx, %bl | | c |