arm嵌入式系统结构与编程习题答案 邱铁著new

arm嵌入式系统结构与编程习题答案 邱铁著new

ID:18760042

大小:305.00 KB

页数:30页

时间:2018-09-22

arm嵌入式系统结构与编程习题答案 邱铁著new_第1页
arm嵌入式系统结构与编程习题答案 邱铁著new_第2页
arm嵌入式系统结构与编程习题答案 邱铁著new_第3页
arm嵌入式系统结构与编程习题答案 邱铁著new_第4页
arm嵌入式系统结构与编程习题答案 邱铁著new_第5页
资源描述:

《arm嵌入式系统结构与编程习题答案 邱铁著new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第8章ARM汇编语言与嵌入式C混合编程1.严格按照嵌入式C语言的编程规范,写一个C语言程序,实现将一个二维数组内的数据行和列进行排序。答:略2.嵌入式C程序设计中常用的移位操作有哪几种,请说明每种运算所对应的ARM指令实现。答:移位操作分为左移操作与右移操作左移运算符“<<”实现将“<<”左边的操作数的各个二进制位向左移动“<<”右边操作数所指定的位数,高位丢弃,低位补0。其值相当于乘以:2“左移位数”次方。右移运算符“>>”实现将“>>”左边的操作数的各个二进制位向右移动“<<”右边操作数所指定

2、的位数。•对于空位的补齐方式,无符号数与有符号数是有区别的。•对无符号数进行右移时,低位丢弃,高位用0补齐,其值相当于除以:2“右移位数”次方•对有符号数进行右移时,根据处理器的不同选择逻辑右移或算术右移3.volatile限制符在程序中起到什么作用。请举例说明。答:volatile的本意为“暂态的”或.“易变的”,该说明符起到抑制编译器优化的作用。如果在声明时用“volatile”关键进行修饰,遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供特殊地址的稳定访问。•例

3、:硬件端口寄存器读取•Charx=0,y=0,z=0;•x=ReadChar(0x54000000);//读端口•y=x;•x=ReadChar(0x54000000);//再读端口•z=x;•以上代码可能被编译器优化为•Charx=0,y=0,z=0;•x=ReadChar(0x54000000);//读端口•y=x;•z=x;•为了确保x的值从真实端口获取,声明时应该为•Volatilecharx;•Chary,z;4.请分析下列程序代码的执行结果。#includemain(

4、){intvalue=0xFF1;int*p1,**p2,***p3,****p4;p1=&value;p2=&p1;p3=&p2;p4=&p3;printf("****p4=%d",****p4);}答:程序输出结果为:****p4=40815.分析宏定义#definePOWER(x)x*x是否合理,举例说明。如果不合理,应如何更改?答:#definePOWER(x)x*x不合理;对于带参数的宏,其参数应该用括号括起来。例:如果按照下边方式使用该宏POWER(2+3)则宏展开后为2+3*2+

5、3该宏应修改为:#definePOWER(x)(x)*(x)6.条件编译在程序设计中有哪些用途?答:条件编译包括了6条预处理指令#ifdef,#ifndef.##if,#elif,#else,#endif.。条件编译的功能在于对源程序中的一部分内容只有满足某种条件的情况下才进行编译。7.何为可重入函数?如果使程序具有可重入性,在程序设计中应该注意哪些问题?答:如果某个函数可以被多个任务并发使用,而不会造成数据错误,我们就说这个函数具有可重入性(reentrant)。可重入函数可以使用局部变量,也可

6、以使用全局变量。如果使用全局变量,则应通过关中断、信号量(即P、V操作)等手段对其加以保护,若不加以保护,则此函数就不具有可重入性,即当多个进程调用此函数时,很有可能使得此全局变量变为不可知状态。8.现有模块module_1,module_2,module_3,要求在模块module_1中提供可供模块module_2,module_3使用的int型变量xx,请写出模块化程序设计框架。答:首先在module_1的.c文件中定义intxx;/*module_1.c*/intxx=0;然后在module

7、_1的.h文件中声明xx为外部变量/*module_1.h*/externintxx;接下来在module_2源文件中包括module_1的.h文件/*module_2.c*/#include"module_1.h"在module_3源文件中包括module_1的.h文件/*module_3.c*/#include"module_1.h"这样在module_2,module_3中就可以使用module_1中提供的int型变量xx了。9.ATPCS与AAPCS的全称是是什么,它们有什么差别?掌握子程

8、序调用过程中寄存器的使用规则,数据栈的使用规则及参数的传递规则,在具体的函数中能够熟练应用。答:过程调用标准ATPCS(ARM-ThumbProduceCallStandard)规定了子程序间相互调用的基本规则,ATPCS规定子程序调用过程中寄存器的使用规则、数据栈的使用规则及参数的传递规则。2007年,ARM公司推出了新的过程调用标准AAPCS(ARMArchitectureProduceCallStandard),它只是改进了原有的ATPCS的二进制代码的兼容性。10.内嵌式汇

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

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

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