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
相关推荐
2501_918126913 小时前
nes游戏语言是6502,有没有一种方法可以实现,开发另一种更高效的汇编语言,替代6052,并本土化,弯道超过nes的底层语言?
汇编·硬件工程·个人开发
啊森要自信4 小时前
【C语言】 C语言文件操作
c语言·开发语言·汇编·stm32·单片机
云qq5 小时前
x86操作系统19——键盘驱动
linux·c语言·汇编
_Voosk7 小时前
C指针存储字符串为何不能修改内容
c语言·开发语言·汇编·c++·蓝桥杯·操作系统
天途小编11 小时前
融合空域相关法规核心条款汇编
汇编·无人机
天途小编11 小时前
无人机相关国家根本条例核心汇编
汇编·无人机
2301_789015621 天前
C++:模板进阶
c语言·开发语言·汇编·c++
Hollis Arthur3 天前
mips栈帧详解
开发语言·汇编·学习·mips
fengye2071613 天前
板凳----------(枯藤 )vs2019+win10(第四章-3)
汇编
white-persist6 天前
【攻防世界】reverse | re1-100 详细题解 WP
c语言·开发语言·网络·汇编·python·算法·网络安全