GCC内联汇编入门 下载本文

内容发布更新时间 : 2024/12/23 10:54:37星期一 下面是文章的全部内容请认真阅读。

GCC内联汇编入门

分类: linux编程2008-12-21 15:48 507人阅读 评论(0) 收藏 举报

目录(?)[-]

1.

1. 2. 3.

2. 3. 4. 5.

1. 2. 3. 4.

6.

1. 2.

7. 8. 9.

前言

版权与许可证 回馈与更正 感谢

简介

GCC汇编语法 基本内联汇编 扩展内联汇编

汇编程序模板 操作数 Clobber列表 Volatile

更多关于约束条件

常用的约束 约束修饰符

一些有用的诀窍 结束语 参考

原文为GCC-Inline-Assembly-HOWTO,在google上可以找到原文,欢迎指出翻译错误。

中文版说明

由于译者水平有限,故译文出错之处,还请见谅。C语言的关键字不译,一些单词或词组(如colbber等)由于恐怕译后词不达意,故并不翻译,由下面的单词表代为解释,敬请见谅。

英文原文中的单词和词组:

operand:操作数,可以是寄存器,内存,立即数。 volatile:易挥发的,是C语言的关键字。 constraint: 约束。

register: 本文指CPU寄存器。

asm:“asm”和“__asm__”在C语言中是关键字。原文中经常出现这个单词,是指嵌入到C语言(或者其它语言)的汇编程序片断。

basic inline assembly:指C语言中内联汇编程序的一种形式,和extended asm对

应。基本格式如下:

asm(\

extended assembly:和basic inline assembly对应,比它多了一些特性,如可以指

明输入,输出等。基本格式如下:

asm ( assembler template : output operands : input operands

: list of clobbered registers );

clobber list:实际上就是被使用的寄存器的列表,用来告诉GCC它们已经被asm

使用了,不要在asm程序外使用它们。不然可能带来不可预见的后果。

clobbered registers:它和clobber list对应。

assembler template:就是汇编模板,所有内联汇编代码都有按一定的格式。

见extended assembly的说明

作者:Sandeep.S 译者:吴遥

版本号 v0.1 2003年3月01日 翻译版更新日期 2008/06/11

这篇HOWTO解释GCC提供的内联汇编特性的用途和用法。学习这篇文章只须具备两个前提条件,显然那就是对x86汇编语言和C语言有基本的了解。

目 录

1. 前言

1.1版权与许可证 1.2回馈与更正 1.3感谢 2.简介

3.GCC汇编语法 4.基本内联汇编 5.扩展内联汇编

5.1汇编程序模板 5.2操作数

5.3 Clobber列表 5.4 Volatile … ? 6.更多关于约束条件

6.1 常用的约束 6.2 约束修饰符 7. 一些有用的诀窍 8. 结束语 9. 参考

1.前言

1.1版权与许可证

版权所有 (c)2003 Sandeep S.

这篇文档是免费的,你可以在依据自由软件组织GNU通用公共许可证条款下重新发布或者修改它。无论是版本2的许可证还是后来的版本(由你自己选择)。

这份文档的发布是希望它有用,但是并没有任何保证。

1.2回馈与更正

欢迎善意的回馈和批评,我感谢每一个指出本文错误的人并尽快地更正错误。

1.3感谢

我向GNU开发者提供这个功能强大的特性表达最诚挚的感谢。感谢Mr.Pramode C E的帮助。感谢政府工程学院的朋友尤其是Nisha Kurur和Sakeeb S精神上的支持。感谢政府工程学院老师对我的帮助。

另外,还要感谢 Phillip、Brennan、Underwood 和 colin@nyx.net ,他们解决了很多难题。