嵌入式linuxc语言基础高级议题

嵌入式linuxc语言基础高级议题

ID:27619844

大小:337.01 KB

页数:14页

时间:2018-12-02

嵌入式linuxc语言基础高级议题_第1页
嵌入式linuxc语言基础高级议题_第2页
嵌入式linuxc语言基础高级议题_第3页
嵌入式linuxc语言基础高级议题_第4页
嵌入式linuxc语言基础高级议题_第5页
资源描述:

《嵌入式linuxc语言基础高级议题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、嵌入式LinuxC编程入门(第2版)(ByFarsight)http://www.farsight.com.cn/www.embedu.org第7章嵌入式LinuxC语言基础——高级议题本章目标预处理符号#define的使用方法及注意要点条件编译的使用方法文件包含的方法C语言的内存动态分配与静态分配C语言与汇编语言的接口嵌入式LinuxC语言中可移植性问题提高程序运行效率的若干方法www.embedu.org预处理所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理是C语言的一个重要功能,它由预处理程序负责完成。www.embedu.org预定义在C语言

2、源程序中允许用一个标识符来表示一个字符串,称为宏,被定义为宏的标识符称为宏名。预定义符号宏定义无参宏定义带参宏定义www.embedu.org文件包含文件包含是C语言预处理程序的另一个重要功能,文件包含命令行的一般形式为:#include"文件名"www.embedu.org条件编译预处理程序提供了条件编译的功能,可以按不同的条件去编译不同的程序代码,从而产生不同的目标代码文件,这对于程序的移植和调试是很有用的。www.embedu.org堆和栈的区别申请方式申请后系统的响应申请大小的限制申请速度的限制堆和栈中的存储内容www.embedu.org嵌入式Linux可移植性考虑嵌入式

3、开发很重要的一个问题就是可移植性的问题。Linux是一个可移植性非常好的系统,这也是嵌入式Linux能够迅速发展起来的一个主要原因。字长和数据类型数据对齐字节顺序www.embedu.orgC和汇编的接口gcc的内嵌式汇编语言提供了一种在C语言源程序中直接嵌入汇编指令的很好的办法,既能够直接控制所形成的指令序列,又有着与C语言的良好接口,所以在Linux内核代码中很多地方都使用了这一语句。www.embedu.org内嵌汇编的语法在gcc中,可以使用__asm__表示后面的代码为内嵌汇编代码,__volatile__表示编译器不要优化代码,后面的指令保留原样,内嵌汇编语法如下:__

4、asm__(汇编语句模板:输出部分:输入部分:破坏描述部分)这里共4个部分:汇编语句模板、输出部分、输入部分和破坏描述部分www.embedu.org编译器优化常用的方法将内存变量缓存到寄存器和调整指令顺序充分利用CPU指令流水线www.embedu.orgC语言关键字volatileC语言关键字volatile(注意它是用来修饰变量而不是上面介绍的__volatile__)表明某个变量的值可能在外部被改变,因此对这些变量的存取不能缓存到寄存器,每次使用时需要重新存取。www.embedu.orgmemory描述符memory描述符告知gcc以下内容。不要将该段内嵌汇编指令与前面

5、的指令重新排序,也就是说在执行内嵌汇编代码之前,它前面的指令都执行完毕。不要将变量缓存到寄存器,因为这段代码可能会用到内存变量,而这些内存变量会以不可预知的方式发生改变,因此gcc插入必要的代码先将缓存到寄存器的变量值写回内存,如果后面又访问这些变量,需要重新访问内存。www.embedu.orggcc对内嵌汇编语言的处理方式(1)变量输入(2)生成代码(3)变量输出www.embedu.org

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。