热点: 与非专题 | 作者专栏 | 新品发布 | 电路方案 |与非社区 | datasheet | 博客空间 | 精彩活动 | 原厂资料 | 厂商专区 | 技术文档 | 行业热点 | 电子百科
上个星期,去深圳一家搞ARM开发的公司面试,HR叫我做了一份卷子,里面都是C编程,心中暗喜,因为这些题基本上都在程序员面试宝典里见过。
华清远见为您带来经典教程:嵌入式Linux应用程序开发
当对源代码使用不同的编译器时,可能会出现一些移植上的问题,这时可以宏将一些ARM特有的关键字“打包”。
大多数的ARM处理器硬件上并不支持浮点运算。但ARM上提供了以下几个选项来实现浮点运算。
函数设计的基本原则是使其函数体尽量的小。这样编译器可以对函数做更多的优化。
ARM C编译器支持基本的数据类型:char、short、int、long long、float和double。表14.2说明了armcc对C语言所使用的数据类型的映射。
编译器一项很重要的优化功能就是对寄存器的分配。与分配在寄存器中的变量相比,分配到内存的变量访问要慢得多。所以如何将尽可能多的变量分配到寄存器,是编程时应该重点考虑的问题。
编译器通常将C语言中的Switch语句编译一个查找表(Table Lookup)以便跳转到合适的入口处。
循环体是程序设计与优化的重点考虑对象。本节将着重讲解在ARM上处理for和while循环最有效的方法。
通常,布尔表达式被用来检测某个数值是否在特定的范围内。例如,在图形窗口处理程序中,常使用布尔表达式判断屏幕中一个点是否在当前活动窗口范围内。
ARM指令都是可以条件执行的。在代码中使用条件执行指令可以减小代码密度并提高程序执行效率。典型的条件执行语句用在比较指令之后,形成程序的分支跳转结构。下面的例子显示了条件执行指令的典型用法。
因为ARM体系结构本身并不包含除法运算硬件,所以在ARM上实现除法是十分耗时的。ARM指令集中没有直接提供除法汇编指令,当代码中出现除法运算时,ARM编译器会调用C库函数(有符合除法调用_rt_sdiv,无符合除法调用_rt_udiv),来实现除法操作。根据除数和被除数的不同,32bit的除法运算一般要占有20-140个指令周期。
本章主要讲解C编译器在代码优化时遇到的一些问题。要编写高效的C语言源代码,必须了解C编译器对什么形式的代码有所改动,编译器涉及的处理器结构的限制,以及一些特殊的C编译器的限制。
本章是Linux中进行C语言编程的基础,首先讲解了C语言编程的关键点,这里关键要了解编辑器、编译链接器、调试器及项目管理工具等概念。
通过指定指令的vi操作练习,使读者能够熟练使用vi中的常见操作,并且熟悉vi的3种模式,如果读者能够熟练掌握实验内容中所要求的内容,则表明对vi的操作已经很熟练了。
在上一小节,读者已经了解到了make项目管理器的强大功能。的确,makefile可以帮助make完成它的使命,但要承认的是,编写makefile确实不是一件轻松的事,尤其对于一个较大的项目而言更是如此。那么,有没有一种轻松的手段生成makefile而同时又能让用户享受make的优越性呢?
到此为止,读者已经了解了如何在Linux下使用编辑器编写代码,如何使用gcc把代码编译成可执行文件,还学习了如何使用gdb来调试程序,那么,所有的工作看似已经完成了,为什么还需要make这个工程管理器呢?
调试是所有程序员都会面临的问题。如何提高程序员的调试效率,更好、更快地定位程序中的问题从而加快程序开发的进度,是大家都很关注的问题。就如读者熟知的Windows下的一些调试工具,如Visual Studio自带的设置断点、单步跟踪等,都受到了广大用户的赞赏。
GNU CC是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。gcc不仅功能强大,而且可以编译如C、C++、Object C、Java、Fortran、Pascal、Modula-3和Ada等多种语言,而且gcc是一个交叉平台编译器。
vi是Linux系统的第一个全屏幕交互式编辑程序,它从诞生至今一直得到广大用户的青睐,历经数十年仍然是人们主要使用的文本编辑工具,足以见其生命力之强,而强大的生命力是其强大的功能带来的。由于大多数读者在此之前都已经用惯了Windows平台上的编辑器,因此,在刚刚接触时总会或多或少不适应,但只要习惯之后,就能感受到它的方便与快捷。
独立后首秀!荣耀V40评测:冉冉升起的旗舰新星
21 分钟前 预计 11 分钟阅读完
中国芯片首富捐资 200 亿!筹建研究型大学,暂名“东方理工”,落地浙江宁波
26 分钟前 预计 9 分钟阅读完
初体验乐鑫 ESP32 AT 指令
27 分钟前 预计 9 分钟阅读完
【附录C SPEF】静态时序分析圣经翻译计划
30 分钟前 预计 17 分钟阅读完
记不住的密码、丢不完的卡卡卡
50 分钟前 预计 11 分钟阅读完
荣耀向左,华为向右
53 分钟前 预计 7 分钟阅读完
给新春一台S,给用户三个S:华为智慧屏的新旅程
54 分钟前 预计 10 分钟阅读完
冲上热搜Top2!iPhone 12要召回了?
1 小时前 预计 6 分钟阅读完
工程师必读-蓝牙开发套件用于IoT快速原型设计的五大功能
1 小时前 预计 8 分钟阅读完
比特币一路飙涨,显卡供不应求
1 小时前 预计 3 分钟阅读完
共有 56 篇文章
共有 2239 篇文章
共有 149 篇文章
共有 343 篇文章
共有 435 篇文章