- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
硬件工程师的 10 个 C 语言技巧
硬件设计师最常见的工作内容是通过写代码来测试硬件。这 10 个 C 语言技巧 (C
语言仍然是常见的选择)可以帮助设计师避免因基础性错误而导致某些缺陷的产生并造
成维护方面的困扰。
为了成功的推出一个产品,软件开发过程本身需要经历无数的实践风险和障碍。任
何工程师最不希望的事情就是因所使用语言或工具而带来的挑战。因此,这就需要硬件
设计师编写代码来测试硬件的工作状况,在资源受限的情况下,还需要开发硬件和嵌入
式软件。尽管工具和结构化编程已经有了很大进展,但通常选择的仍然是 C 语言,基础
性错误的不断发生,仍会导致某些缺陷的产生并造成维护方面的困扰。为竭力避免这些
C 编程陷阱,这里有 10 个 C 语言技巧供硬件工程师参考。
技巧#1:不要使用 “GOTO”语句
二十几年前,当计算机编程尚处于起步阶段时,程序流程是由 “GOTO ”语句来控
制。该类语句允许程序员对当前代码行断行,而直接进入另一个不同的代码段。列表 1
为简单的示例。
列表 1 使用 GOTO 语句
编程语言终究开始引入了函数的概念,即允许程序对代码进行断行。如果已经完成,
不再使用 goto 语句来表示代码的断行。函数调用后,函数将回到下一条指令。列表 2
为示例。这一做法改善了程序结构,提高了可读性。自此,这被视为编写程序的正确方
法。只要看到或想到 goto 语句,就会让软件工程师退缩,产生本能的厌恶。其中一个
主要的原因是,一个遍布 goto 语句的程序会让让人很难抓住重心,不便于对程序的理
解和维护。
列表 2 用函数控制流程
技巧#2:使用 FOR (;;)或While (1)
如果 goto 语句已经过时,那么对程序创建无限循环应该如何去做呢,这是一些硬
件工程师可能会疑惑的问题。毕竟,之前都是通过创建一个 goto 语句然后再返回到 main
语句。解决这一问题就要利用 C 语言中已经存在的循环语句 for 和 while (列表3 和 4 )。
列表 3 使用一个无限的 For 循环
列表 4 使用一个无限的 While 循环
列表中的循环条件相对比较简单。for 循环无非是以无条件情况使用条件语句。而
另一方面,while 循环是语句为真即予执行,这等同对任何条件的非零值。
技巧#3:使用合适的条件语句
除代码的可读性之外,程序的执行时间还主要依赖于做决定时所选择的条件结构类
型。许多硬件工程师都熟悉简单的 if 语句的使用。然而,有时工程师可能没有意识到,
如果第一个条件不正确,还可以使用 else 或 else if 语句。这可以节省处理器时间,而不
必评估另一个条件语句。在列表 5 所示的前半部分代码中,如果 Var 值为 1,则代码仍
会查看 Var 是否为 0 。而在用了 else 语句的后半部分代码中,只评估第一个语句,之后
就继续走下面的代码,这样就节省了时钟周期,使代码更加清晰。
列表 5 用 If/Else 替代只用 If
If/else if/else 语句可能并不永远适用。如果需要检查若干个可能的条件,switch 语句
可能更合适。这样,处理器可以评估语句,然后从一个答案列表中选择下一步动作,而
不用连续地评估一堆条件。列表 6 显示的例子与列表 5 示例的类型相同。
列表 6 使用 Switch 语句
以上示例的寓意是,让条件语句的选择更开放,以选择出最适合的语句。这种做法
使程序结构更简单,便于理解程序流程,缩短处理器的额外时钟周期。
技巧#4:避免使用汇编语言
微处理器的自然语言为汇编语言指令。为低级别机器语言编程可能会为处理器提供
更高效的代码。然而,人类并不是天生就会这种语言,并且经验表明,编写汇编语言会
造成误解。误解会导致维护不当,更甚者,可能会使系统到处是 bug.一般建议避免使用
汇编语言。实际上,现在大多数编译器都能编译出非常高效的代码。采用 C 语言或 C++
语言等高级语言的开发,能获得更有序的结构,便于理解和维护,使代码的整体效果更
好。列表 7 给出了一个示例,比较了使一个32 位变量递增所使用的汇编代码和 C 语言
代码。
列表 7 用汇编和 C 语言完成一个变量的递增
汇编
C 代码
当然,现在仍有一些场合适于使用汇编语言,但这种场合仍比较少。首个推荐的场
合是开发引导装载程序。这种情况
文档评论(0)