GNU汇编

  1. 操作数方向和 Intel 语法的刚好相反。

  2. 寄存器名称有 "%" 前缀

  3. 立即数以 "$" 为前缀。

  4. 存储器操作数的大小取决于操作码名字的最后一个字符。操作码后缀 'b' 、'w'、'l' 分别指明了字节(8位)、字(16位)、长型(32位)存储器引用。

  5. 基址寄存器变为 "(" 和 ")"。另外,在 Intel 语法中, 间接内存引用"section:[base + index*scale + disp]",在 AT&T中变为 "section:disp(base, index, scale)"。

  6. 需要牢记的一点是,当一个常量用于 disp 或 scale,不能添加 "$" 前缀。

Intel AT&T
mov eax,[ecx] movl (%ecx),%eax
mov eax,[ebx+3] movl 3(%ebx),%eax
add eax,[ebx+ecx*2h] addl (%ebx,%ecx,0x2),%eax
sub eax,[ebx+ecx*4h-20h] subl -0x20(%ebx,%ecx,0x4),%eax
----- -----
----- -----

"="修饰符表明它是一个只读的输出操作数。

"r" 表明可以使用任一寄存器存储操作数。

参考链接:

  1. https://www.linuxprobe.com/gcc-how-to.html
  2. https://blog.csdn.net/superSmart_Dong/article/details/117573516
相关推荐
iCxhust2 小时前
微机原理课程设计大综合---计数器
汇编·单片机·嵌入式硬件·课程设计·微机原理
xxjj998a1 天前
PHP与汇编:从Web到硬件的编程差异
开发语言·汇编·php
陈eaten2 天前
汇编使用AES指令集实现AES解密
汇编·python·aes解密·aes指令集
顾鉴行思2 天前
10 字符串常量到底存在哪里?
c语言·汇编·经验分享
iCxhust2 天前
在 emu8086 中可以直接编译运行的完整汇编程序,演示数组的定义、遍历、求和、求最大值。
开发语言·前端·javascript·汇编·单片机·嵌入式硬件·算法
浩浩测试一下3 天前
堆栈中的 参数与局部变量 (逆向分析)
汇编·逆向·免杀·堆栈·windows编程·pe壳
iCxhust3 天前
微机原理实践教程(C语言篇)---A001闪烁灯
c语言·开发语言·汇编·单片机·嵌入式硬件·51单片机·微机原理
浩浩测试一下4 天前
抬栈 恢复上下文 (逆向分析)
汇编·逆向·堆栈·windows核心编程
zhouwy1134 天前
ARM汇编指令集详解
汇编·arm开发
iCxhust4 天前
微机原理实践教程(汇编篇)---A002流水灯
汇编·单片机·嵌入式硬件·51单片机·微机原理