`
mjt0704
  • 浏览: 4525 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

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也可有可无。

 

分享到:
评论

相关推荐

    Linux2.6内核标准教程(共计8-- 第1个)

    附录C Linux内核汇编语法 358 C.1 常规汇编语法 359 C.1.1 寄存器前缀 359 C.1.2 立即数前缀 359 C.1.3 操作数顺序 359 C.1.4 操作数宽度 359 C.1.5 内存寻址格式 359 C.2 内嵌汇编语法 360 C.2.1 ...

    Linux2.6内核标准教程(共计8--第6个)

    附录C Linux内核汇编语法 358 C.1 常规汇编语法 359 C.1.1 寄存器前缀 359 C.1.2 立即数前缀 359 C.1.3 操作数顺序 359 C.1.4 操作数宽度 359 C.1.5 内存寻址格式 359 C.2 内嵌汇编语法 360 C.2.1 ...

    Linux2.6内核标准教程(共计8--第8个)

    附录C Linux内核汇编语法 358 C.1 常规汇编语法 359 C.1.1 寄存器前缀 359 C.1.2 立即数前缀 359 C.1.3 操作数顺序 359 C.1.4 操作数宽度 359 C.1.5 内存寻址格式 359 C.2 内嵌汇编语法 360 C.2.1 ...

    Linux2.6内核标准教程(共计8--第3个)

    附录C Linux内核汇编语法 358 C.1 常规汇编语法 359 C.1.1 寄存器前缀 359 C.1.2 立即数前缀 359 C.1.3 操作数顺序 359 C.1.4 操作数宽度 359 C.1.5 内存寻址格式 359 C.2 内嵌汇编语法 360 C.2.1 ...

    Linux2.6内核标准教程(共计8--第7个)

    附录C Linux内核汇编语法 358 C.1 常规汇编语法 359 C.1.1 寄存器前缀 359 C.1.2 立即数前缀 359 C.1.3 操作数顺序 359 C.1.4 操作数宽度 359 C.1.5 内存寻址格式 359 C.2 内嵌汇编语法 360 C.2.1 ...

    Linux2.6内核标准教程(共计8--第4个)

    附录C Linux内核汇编语法 358 C.1 常规汇编语法 359 C.1.1 寄存器前缀 359 C.1.2 立即数前缀 359 C.1.3 操作数顺序 359 C.1.4 操作数宽度 359 C.1.5 内存寻址格式 359 C.2 内嵌汇编语法 360 C.2.1 ...

    Linux2.6内核标准教程(共计8--第2个)

    附录C Linux内核汇编语法 358 C.1 常规汇编语法 359 C.1.1 寄存器前缀 359 C.1.2 立即数前缀 359 C.1.3 操作数顺序 359 C.1.4 操作数宽度 359 C.1.5 内存寻址格式 359 C.2 内嵌汇编语法 360 C.2.1 ...

    Linux2.6内核标准教程(共计8--第5个)

    附录C Linux内核汇编语法 358 C.1 常规汇编语法 359 C.1.1 寄存器前缀 359 C.1.2 立即数前缀 359 C.1.3 操作数顺序 359 C.1.4 操作数宽度 359 C.1.5 内存寻址格式 359 C.2 内嵌汇编语法 360 C.2.1 ...

    GCC的内嵌汇编语法

    __asm__ __volatile__ GCC的内嵌汇编语法说明,看Linux内核必备

    ATT.rar_ATT汇编_at_att_linux 汇编

    AT&T汇编的比较详细的说明,区分了它和X86汇编使用的不同之处,学习linux内核的一定要看看哦

    UNIX / Linux 汇编语言手册

    学习UNIX / Linux 内核,驱动,底层代码必须要掌握的汇编语言。本手册是 AT&T 汇编语法的官方资料。

    GCC的内嵌AT&T汇编语法

    介绍GCC的内嵌AT&T汇编语言语法知识,比较详细,是读LINUX内核不可获取的文档。

    (第一章)at&t汇编语法格式.part3.rar

    linux内核编程入门(第一部分)(第一章)at&t汇编语法格式.part3.rar

    (第一章)at&t汇编语法格式.part1.rar

    linux内核编程入门(第一部分)(第一章)at&t汇编语法格式.part1.rar

    (第一章)at&t汇编语法格式.part2.rar

    linux内核编程入门(第一部分)(第一章)at&t汇编语法格式.part2.rar

    嵌入式Linux应用开发完全手册.pdf

    从底层系统支持到上层GUI应用的方方面面,内容涵盖Linux操作系统的安装及相关工具的使用、配置,嵌入式编程所需要的基础知识(交叉编译工具的选项设置、Makefile语法、ARM汇编指令等),硬件部件的使用及编程(囊括了...

    Linux0.11内核main函数那些事

    本课程介绍Linux0.11版本内核如何人工设置...课程还会介绍嵌入式汇编的基本语法,帮助进阶内核代码阅读。课程最后会介绍,任务0 fork()任务1 init进程的过程,以及在进程1中使用fork()创建登录shell及交互shell的过程。

    嵌入在Python的x86-64汇编器PeachPy.zip

    一些特性:用于 Windows,Unix 和 Golang 程序集的通用汇编语法.PeachPy 可以直接生成 ELF,MS COFF 和 Mach-O 对象文件以及 Golang 工具链的汇编列表自动适应不同的调用约定和 ABIs用于不同平台的功能可以从汇编...

    GNU ARM汇编指令介绍

    GNU官方的ARM汇编指令手册,是GNU对ARM指令的扩展,如果你对linux内核或是uboot的汇编代码的一些语法不是很理解,有必要看一下。

    嵌入式Linux应用开发完全手册 清晰版PDF 有书签

    设置、Makefile 语法、ARM 汇编指令等),硬件部件的使用及编程(囊括了常见硬件,比如 UART、I2C、 LCD 等),U-Boot、Linux 内核的分析、配置和移植,根文件系统的构造(包括移植 busybox、glibc、制作 映象文件等...

Global site tag (gtag.js) - Google Analytics