RSS
热门关键字:  数据挖掘  人工智能  数据仓库  搜索引擎  数据挖掘导论
当前位置 :| 首页>电脑常识>操作系统>

Linux操作系统中x86的内联汇编方法

来源: 作者:unkonwn 时间:2004-12-20 点击:

Linux 中 x86 的内联汇编
  
  将各个部分组合起来
  
  developerWorks
  
  文档选项
  
  将此页作为电子邮件发送
  
  
  最新推荐
  
  Java 应用开发源动力 - 下载免费软件,快速启动开发
  
  级别: 初级
  
  Bharata B. RaoIBM Linux 技术中心,IBM 软件实验室,印度
  
  Bharata B. Rao 提供了在 Linux 平台上使用和构造 x86 内联汇编的概括性介绍。他介绍了内联汇编及其各种用法的基础知识,提供了一些基本的内联汇编编码指导,并解释了在 Linux 内核中内联汇编代码的一些实例。
  
  如果您是 Linux 内核的开发人员,您会发现自己经常要对与体系结构高度相关的功能进行编码或优化代码路径。您很可能是通过将汇编语言指令插入到 C 语句的中间(又称为内联汇编的一种方法)来执行这些任务的。让我们看一下 Linux 中内联汇编的特定用法。(我们将讨论限制在 IA32 汇编。)
  
  GNU 汇编程序简述 数据挖掘研究院
  
  让我们首先看一下 Linux 中使用的基本汇编程序语法。GCC(用于 Linux 的 GNU C 编译器)使用 AT&T 汇编语法。下面列出了这种语法的一些基本规则。(该列表肯定不完整;只包括了与内联汇编相关的那些规则。)
  
  寄存器命名
  
  寄存器名称有 % 前缀。即,如果必须使用 eax,它应该用作 %eax.
  
  源操作数和目的操作数的顺序
  
  在所有指令中,先是源操作数,然后才是目的操作数。这与将源操作数放在目的操作数之后的 Intel 语法不同。
  
  mov %eax, %ebx, transfers the contents of eax to ebx.
  
  作数大小
  
  根据操作数是字节 (byte)、字 (word) 还是长型 (long),指令的后缀可以是 b、w 或 l.这并不是强制性的;GCC 会尝试通过读取操作数来提供相应的后缀。但手工指定后缀可以改善代码的可读性,并可以消除编译器猜测不正确的可能性。
  
  movb %al, %bl —— Byte move
  
  movw %ax, %bx —— Word move
  
  movl %eax, %ebx —— Longword move
  
  

1 2 下一页>>

数据挖掘研究院

最全面的服务器导购资讯,形成全方位的服务器导购平台
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
匿名?