- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
凹凸笔考试目
凹凸笔试题目(嵌入式软件开发)
?
Embedded Software Design Engineer1 读程序段,回答问题(a)
int main(int argc,char *argv[]){int c=9,d=0;c=c++%5;d=c;printf(d=%d\n,d);return 0;}a) 写出程序输出b) 在一个可移植的系统中这种表达式是否存在风险?why?
答案:5
存在风险,因为c=c++%5;这个表达式对c有两次修改,行为未定义,c的值不确定
(b)#include stdio.hint a=0; // data sectionint b; ? // data sectionstatic char c;? // BSSint main(int argc,char *argv[]){char d=4;? // stackstatic short e;? ? // BSSa++;b=100;c=(char)++a;e=(++d)++;printf(a=%d, b=%d, c=%d, d= %d, e=%d,a,b,c,d,e);return 0;}
a) 写出程序输出b) 编译器如果安排各个变量(a,b,c,d)在内存中的布局(eg. stack,heap,data section,bss section),最好用图形方式描述。
答案:a=2,b=100,c=2,d=6,e=5
2 中断是嵌入式系统中重要的组成部分,这导致了许多编译开发商提供一种扩展:让标准C支持中断,产生了一个新的关键字__interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论以下这段代码。__interrupt double compute_area(double radius){double area = PI * radius *radius;printf(nArea = %f, area);return area;}
答案
a)ISR不能返回一个值;? b)ISR不能传递参数;? c)浮点一般都是不可重入的;? d)printf函数有重入和性能上的问题。
3 C/C++基础知识问题a) 关键字volatile在编译时有什么含义?并给出三个不同使用场景的例子(可以伪代码或者文字描述)。
用volatile关键字定义变量,相当于告诉编译器,这个变量的值会随时发生变化,每次使用时都需要去内存里
重新读取它的值,并不要随意针对它作优化。
建议使用volatile变量的场所:(1) 并行设备的硬件寄存器(2) 一个中断服务子程序中会访问到的非自动变量(全局变量)(3) 多线程应用中被几个任务共享的变量
b) C语言中static关键字的具体作用有哪些 ?
在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。???? 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数
访问。它是一个本地的全局变量。???? 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的
模块的本地范围内使用。???? static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;???? static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;???? static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝c) 请问下面三种变量声明有何区别?请给出具体含义int const *p;int* const p;int const* const p;
答案
一个指向常整型数的指针一个指向整型数的常指针一个指向常整型数的常指针
4 嵌入式系统相关问题a) 对于整形变量A=0请画出在little endian及big endian的方式下在内存中是如何存储的。
little endian??????? big endian 刚好反过来? 高地址--〉 0x12????? 低地址--〉 0x12???????????? 0x34???????????????? 0x34???????????? 0x56???????????????? 0x56? 低地址--〉 0x78????? 高地址--〉 0x78
b) 在ARM系统中,函数调用的时候,参数是通过哪种方式传递的?
参数=4时候,通过R0~R3传递,4的通过压栈方式传递
c) 中断
您可能关注的文档
最近下载
- FLEX SYSTEM EN2092 1GB ETHERNET调试文档模板.pdf VIP
- 2024年9月中国汽车产销报告.pdf VIP
- 2024年11月广东深圳市福田区选用机关事业单位辅助人员和社区专职工作者143人笔试备考题库及答案解析.docx VIP
- 流体力学 课件 第6章 气体射流.pptx
- 武汉理工大学材料科学基础课件(全套).pdf
- 风貌改造工程施工组织设计.doc
- 药品生物检定技术 全套教案.doc
- 浅谈双碳战略下的自来水厂碳核算碳减排经验分享_供水技术讲座资料课件.pptx
- 2024广州铁路局机考.pdf
- 11《动物的眼睛》教学设计-2023-2024学年科学二年级下册青岛版.docx VIP
文档评论(0)