没有合适的资源?快使用搜索试试~ 我知道了~
GCC内嵌汇编.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 5 浏览量
2023-05-22
12:58:39
上传
评论
收藏 611KB PDF 举报
温馨提示
试读
8页
GCC内嵌汇编.pdf
资源推荐
资源详情
资源评论
. .
英文原文中的单词和词组:
operand:操作数,可以是存放器,内存,立即数。
volatile:易挥发的,是 C 语言的关键字。
constraint: 约束。
register: 本文指 CPU 存放器。
asm:"asm〞和"__asm__〞在 C 语言中是关键字。原文中经常出现这个单词,是指嵌入到 C 语言〔或者其
它语言〕的汇编程序片断。
basic inline assembly:指 C 语言中内联汇编程序的一种形式,和 extended asm 对应。根本格式如
下:
asm("assembly code");
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 的说明
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 和 colinnyx.net ,他们解决了很多难题。
2.简介
现在我们开场学 GCC 内联汇编。内联意味着什么?
我们可以指示编译器插入一个函数的代码到调用者的代码中,也就是实际上调用产生的地方。这样
的函数就是内联函数。看上去很像宏?实际上它们很相似。
内联函数有什么好处呢?
内联的方法减少了函数调用的额外开销。而且如果有实际的参数值是常数,那么在编译的时候编译
器知道可能充许参数值的单一化,所以并不是所有的内联函数的代码都要
包含进来。对可执行代码大小的影响是不可预测的,它视乎对特定的情况。声明一个内联函数,我们声
明中使用关键字 inline。
现在我们站在一个位置来猜什么是内联汇编。它只是一些写在函数内的汇编语言的程序。在系统编
程时候它们会显得很便利,快速,非常有用。我们的主要目标是学习 GCC
内联汇编函数的根本格式和用法。
内联汇编之所以如此重要主要是因为它操作的能力和让它的输出在 C 语言变量中可见。〔这个句话
译得不太好〕因为这样的能力,"asm〞〔译者:asm 指内联函数〕就像一个汇编指令和包含它的 C 语言程
序之间的接口。
3.GCC 汇编语法
GCC,即 Linux 平台下的 GNU C 语言编译器,它使用 AT&T&sol〔译者:应该是指 AT&T 语法,但是
sol 就不知道是什么〕;UNIX 汇编语法。现在让我们使用 AT&T 语法来进展汇编编码。如果你对 AT&T
语法不熟悉也不用担忧,我将会教你。这种语法和 Intel 语法有很大的不同。以下我将给出主要的不
-优选
资源评论
hhappy0123456789
- 粉丝: 58
- 资源: 5万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功