AT&T语法:
基本方面:
在指令名字后面加加上操作数大小后缀,如b,w,l(1,2,4Bytes)
设计思想是源操作数->目的操作数,所以目的操作数在右边
立即数前面加$,寄存器的值前面加%
如果直接使用一个数就表示这个数对应的地址
内存寻址:
segreg(段基址):base_address(offset_address, index, size) ==
segreg:base_address + offset_address + index * size
其中,base_address是基地址,可以为整数、变量名,offset_address和index必须为八个通用寄存器之一
注意:格式中没有的部分也要保留逗号
基本内联汇编:
格式:
asm(_asm) [volatile(_volatile_)] ("assembly code")
assembly code规则:
可以使用多个引号
指令必须用双引号括起来,无论双引号中是一条还是多条指令
一对双引号不能跨行,跨行要加\
指令之间必须用分号;或者\n或者\n\t分割
注意:
在基本内联汇编中,若要引用C语言变量,只能使用全局变量,不然链接的时候找不到
原文:https://www.cnblogs.com/TherLF/p/14838986.html