rqdmap
首页
博客
算法
漫评
关于
日志
创建时间
修改时间
字数
内联汇编
C内联汇编-AT&T
2021.10.13 23:02
2023.05.29 23:05
技术
汇编语言
内联汇编
2902字
GCC-Inline-Assembly-HOWTO GCC 汇编语法 GCC采用AT&T的汇编语法,这和intel汇编语法有一些不同: 操作数的顺序。intel语法通常是op dst src,在AT&T语法中则是op src dst 寄存器命名时需要加上%作为前缀 立即数的表示。AT&T立即数以$作为前缀,对于字符串常量而言也需要加上该前缀。intel语法中使用h后缀表示一个十六进制数,AT&T使用前缀0x表示。因而当表示一个十六进制的立即数时,则写为$0x123的格式 操作符的大小。AT&T中使用操作符后缀来确定该被作用的操作数的长度,‘b’, ‘w’, ’l’分别表示byte(8-bit), word(16-bit), long(32-bit);在intel汇编中则是通过ptr作用在操作数上确定对应的长度 地址操作数。在间接寻址时,intel使用[base + index*scale + disp]的语法,在AT&T中则使用disp(base, index, scale)的语法。需要注意,当disp/scale中出现常量时,不需要$前缀。 基础语法 c 1asm("assembly code"); 如果asm关键字与代码中其余部分冲突,也可以使用__asm__指令,二者是等价的。 ...