Linux内核汇编语法

GNU的汇编器gas是Linux系统中常用的汇编器,它遵循AT&T汇编语法规范。由于Linux内核基于GNU工具链进行开发,所以内核中的汇编也遵循该语法。

一、常规汇编语法

1.1 寄存器前缀

如需访问寄存器,在寄存器名字前加前缀%即可。如

 

movl $1234ffff, %eax

 

1.2 立即数前缀

如需使用立即数,在立即数前加前缀$即可。如

 

movl $1234ffff, %eax

 

当前缀$使用在变量名称之前时,表示引用该变量的地址。如:

var:
    .word 0xA5
    movl $var, %eax

将数据0xA5的地址放入了寄存器eax。

 

1.3 操作数顺序

在AT&T汇编中,源操作数在前,目的操作数在后。这个和Intel汇编语法正好相反。如

movl %eax, %ebx

表示将寄存器eax的内容传送到寄存器ebx。

 

1.4 操作数宽度

在AT&T汇编中,每条汇编指令的操作码的后缀b、w、l分别表示操作数的宽度为1、2、4字节。如:

movb %al, %bl
movw %ax, %bx
movl %eax, %ebx

1.5 内存寻址格式

在AT&T汇编中,对于内存寻址可用通用的模板。如:

movw disp(base, index, scale), %ax

表示将base+index*scale+disp指向的内存单元的字节数据传送到寄存器%ax中。

其中base必不可少;index、scale可有可无,但必须同时出现;disp也可有可无。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值