<html xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="utf-8"><meta name="generator" content="pdf2htmlEX"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><link rel="stylesheet" href="https://csdnimg.cn/release/download_crawler_static/css/base.min.css"><link rel="stylesheet" href="https://csdnimg.cn/release/download_crawler_static/css/fancy.min.css"><link rel="stylesheet" href="https://csdnimg.cn/release/download_crawler_static/11847956/raw.css"><script src="https://csdnimg.cn/release/download_crawler_static/js/compatibility.min.js"></script><script src="https://csdnimg.cn/release/download_crawler_static/js/pdf2htmlEX.min.js"></script><script>try{pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});}catch(e){}</script><title></title></head><body><div id="sidebar" style="display: none"><div id="outline"></div></div><div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://csdnimg.cn/release/download_crawler_static/11847956/bg1.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x2 h2 y2 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x3 h3 y3 ff2 fs0 fc0 sc1 ls1 ws0">嵌入式系统高级编程<span class="_ _0"></span>语言技术分析<span class="ff3 sc0 ls0"> </span></div><div class="t m0 x2 h4 y4 ff2 fs0 fc0 sc0 ls0 ws0">[关键词] :嵌入式系统 高级语言 基本性能 编程特点 </div><div class="t m0 x2 h4 y5 ff2 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x2 h4 y6 ff2 fs0 fc0 sc0 ls0 ws0">一、 嵌入式系统高级语言编程特点 </div><div class="t m0 x2 h4 y7 ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>随着嵌入式系统应用范围的不断扩大和嵌入式实时操作系统 RTOS(Real <span class="_ _1"></span>Time <span class="_ _1"></span>Operating <span class="_ _1"></span>System)的</div><div class="t m0 x2 h4 y8 ff2 fs0 fc0 sc0 ls0 ws0">广泛使用,高级语言<span class="_ _2"></span>编程已是嵌入式系<span class="_ _2"></span>统设计的必然趋<span class="_ _2"></span>势。因为汇编语言和<span class="_ _2"></span>具体的微处理器的<span class="_ _2"></span>硬件结构密</div><div class="t m0 x2 h4 y9 ff2 fs0 fc0 sc0 ls0 ws0">切相关,移植性较差<span class="_ _2"></span>,既不宜在复杂系<span class="_ _2"></span>统中使用,又不<span class="_ _2"></span>便于实现软件重用;<span class="_ _2"></span>而高级语言具有良<span class="_ _2"></span>好的通用性</div><div class="t m0 x2 h4 ya ff2 fs0 fc0 sc0 ls0 ws0">和丰富的软件支持,便于推广,易于维护。因此高级语言编程具有许多优势。 </div><div class="t m0 x2 h4 yb ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>(1) 通用性强<span class="_ _2"></span>。随着微处理器技<span class="_ _2"></span>术的不断发展,<span class="_ _2"></span>其功能越来越具体,<span class="_ _2"></span>种类越来越多,而<span class="_ _2"></span>不同种类的</div><div class="t m0 x2 h4 yc ff2 fs0 fc0 sc0 ls0 ws0">微处理器都有自己专<span class="_ _2"></span>用的汇编语言。这<span class="_ _2"></span>就为系统开发者<span class="_ _2"></span>设置了一个巨大的障<span class="_ _2"></span>碍,使得系统编程<span class="_ _2"></span>更加困难,</div><div class="t m0 x2 h4 yd ff2 fs0 fc0 sc0 ls0 ws0">软件重用无法实现;<span class="_ _2"></span>而高级语言一般和<span class="_ _2"></span>具体机器的硬件<span class="_ _2"></span>结构联系较少,比较<span class="_ _2"></span>流行的高级语言对<span class="_ _2"></span>多数微处理</div><div class="t m0 x2 h4 ye ff2 fs0 fc0 sc0 ls0 ws0">器都有良好的支持,通用性较好。 </div><div class="t m0 x2 h4 yf ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>(2) 容易编程<span class="_ _2"></span>。随着嵌入式系统<span class="_ _2"></span>应用范围的不断<span class="_ _2"></span>扩大和应用层面的不<span class="_ _2"></span>断深入,系统规模<span class="_ _2"></span>越来越大,</div><div class="t m0 x2 h4 y10 ff2 fs0 fc0 sc0 ls0 ws0">结构越来越复杂,设<span class="_ _2"></span>计变得越来越困难<span class="_ _2"></span>。一个系统内有<span class="_ _2"></span>多种微处理器已是常<span class="_ _2"></span>见的事情。这时,<span class="_ _2"></span>要用汇编语</div><div class="t m0 x2 h4 y11 ff2 fs0 fc0 sc0 ls0 ws0">言编程不仅要求编程<span class="_ _2"></span>人员要对所有微处<span class="_ _2"></span>理器的汇编语言<span class="_ _2"></span>都了如指掌,而且随<span class="_ _2"></span>着任务复杂程度的<span class="_ _2"></span>不断提高,</div><div class="t m0 x2 h4 y12 ff2 fs0 fc0 sc0 ls0 ws0">用汇编语言实现规模<span class="_ _2"></span>较大的任务难度极<span class="_ _2"></span>大;而高级语言<span class="_ _2"></span>的语意层次较高,且<span class="_ _2"></span>有丰富的程序库支<span class="_ _2"></span>持,因此,</div><div class="t m0 x2 h4 y13 ff2 fs0 fc0 sc0 ls0 ws0">编写较复杂的程序相<span class="_ _2"></span>对简单。使用高级<span class="_ _2"></span>语言编程,不仅<span class="_ _2"></span>能够加快系统开发进<span class="_ _2"></span>程,节省大量时间<span class="_ _2"></span>,同时也有</div><div class="t m0 x2 h4 y14 ff2 fs0 fc0 sc0 ls0 ws0">利于系统调试及维护工作。 </div><div class="t m0 x2 h4 y15 ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_ _3"> </span>(3)<span class="_ _4"></span> 容易阅读。<span class="_ _4"></span>由于汇编语言的语意层次较低,<span class="_ _4"></span>在阅读汇编语言程序时,<span class="_ _4"></span>往往要花费大量精力分析"</div><div class="t m0 x2 h4 y16 ff2 fs0 fc0 sc0 ls0 ws0">细节"问题,如为什么<span class="_ _2"></span>把一个数据传送给<span class="_ _2"></span>一个寄存器,为<span class="_ _2"></span>什么把某个标志位清<span class="_ _2"></span>零等。当把注意力<span class="_ _2"></span>放在这些"</div><div class="t m0 x2 h4 y17 ff2 fs0 fc0 sc0 ls0 ws0">细节"上的时候,<span class="_ _4"></span>往往又把程序的主线忘记了。<span class="_ _4"></span>因此,<span class="_ _4"></span>汇编语言程序不仅难写,<span class="_ _4"></span>而且难读。<span class="_ _4"></span>采用高级语言就</div><div class="t m0 x2 h4 y18 ff2 fs0 fc0 sc0 ls0 ws0">可以很好地解决这些<span class="_ _2"></span>问题。因为高级语<span class="_ _2"></span>言的语意层次较<span class="_ _2"></span>高,表达方式更接近<span class="_ _2"></span>人们日常的思维方<span class="_ _2"></span>法,一些数</div><div class="t m0 x2 h4 y19 ff2 fs0 fc0 sc0 ls0 ws0">学表达式可以直接用一条语句表达,程序的思路更加清晰、简捷。因此,程序也就容易阅读。 </div><div class="t m0 x2 h4 y1a ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>(4) 可移植性<span class="_ _2"></span>好。由于汇编语言<span class="_ _2"></span>和具体的微处理<span class="_ _2"></span>器密切相关,为某个<span class="_ _2"></span>微处理器设计的程<span class="_ _2"></span>序不能直接</div><div class="t m0 x2 h4 y1b ff2 fs0 fc0 sc0 ls0 ws0">移植到另一个不同种<span class="_ _2"></span>类的微处理器上使<span class="_ _2"></span>用,因此,移植<span class="_ _2"></span>性差;而高级语言对<span class="_ _2"></span>所有微处理器都是<span class="_ _2"></span>通用的,因</div><div class="t m0 x2 h4 y1c ff2 fs0 fc0 sc0 ls0 ws0">此,程序可以在不同的微处理器上运行,可移植性较好。这是实现软件重用的基础。 </div><div class="t m0 x2 h4 y1d ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>(5) 可维护性<span class="_ _2"></span>好。高级语言程序<span class="_ _2"></span>往往是模块化设<span class="_ _2"></span>计,各个模块之间的<span class="_ _2"></span>接口是固定的。因<span class="_ _2"></span>此,当系统</div><div class="t m0 x2 h4 y1e ff2 fs0 fc0 sc0 ls0 ws0">出现问题时,可以很<span class="_ _2"></span>快地将问题定位到<span class="_ _2"></span>某个模块内,并<span class="_ _2"></span>尽快得到解决。另外<span class="_ _2"></span>,模块化设计也便<span class="_ _2"></span>于系统功能</div><div class="t m0 x2 h4 y1f ff2 fs0 fc0 sc0 ls0 ws0">的扩充和升级。 </div><div class="t m0 x2 h4 y20 ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>(6) 直接支持<span class="_ _2"></span>中断管理。中断是<span class="_ _2"></span>嵌入式系统最重<span class="_ _2"></span>要也是最常用的信息<span class="_ _2"></span>交换方式,因此中<span class="_ _2"></span>断系统是否</div><div class="t m0 x2 h4 y21 ff2 fs0 fc0 sc0 ls0 ws0">灵活,中断功能是否<span class="_ _2"></span>强大对系统的性能<span class="_ _2"></span>影响极大。在高<span class="_ _2"></span>级语言中,一般都有<span class="_ _2"></span>强大的中断管理机<span class="_ _2"></span>制,以便构</div><div class="t m0 x2 h4 y22 ff2 fs0 fc0 sc0 ls0 ws0">建高效灵活的中断系<span class="_ _2"></span>统;而在汇编语言<span class="_ _2"></span>中,一般要由程<span class="_ _2"></span>序设计者自己编程来<span class="_ _2"></span>进行中断管理。这<span class="_ _2"></span>不仅增加了</div><div class="t m0 x2 h4 y23 ff2 fs0 fc0 sc0 ls0 ws0">编程的难度,而且效果也不一定好。 </div><div class="t m0 x2 h4 y24 ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>(7) 支持软件<span class="_ _2"></span>重用。由于汇编语<span class="_ _2"></span>言的可移植性极<span class="_ _2"></span>差,使得其软件重用<span class="_ _2"></span>性严重受阻;而高<span class="_ _2"></span>级语言具有</div><div class="t m0 x2 h4 y25 ff2 fs0 fc0 sc0 ls0 ws0">较好的通用性和可移<span class="_ _2"></span>植性,这就使得高<span class="_ _2"></span>级语言程序可以<span class="_ _2"></span>在不同时间、不同地<span class="_ _2"></span>点、不同系统、不<span class="_ _2"></span>同人员之间</div><div class="t m0 x2 h4 y26 ff2 fs0 fc0 sc0 ls0 ws0">分享,实现软件重用<span class="_ _2"></span>。这不仅可以提高<span class="_ _2"></span>产品质量,缩短<span class="_ _2"></span>开发周期,降低产品<span class="_ _2"></span>成本,而且还可以<span class="_ _2"></span>使软件开发</div><div class="t m0 x2 h4 y27 ff2 fs0 fc0 sc0 ls0 ws0">走上正规化、产业化的道路[1]。 </div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div></body></html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://csdnimg.cn/release/download_crawler_static/11847956/bg2.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x2 h2 y2 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x2 h4 y28 ff2 fs0 fc0 sc1 ls1 ws0">二、 嵌入式系统高级<span class="_ _0"></span>编程语言概述 <span class="sc0 ls0"> </span></div><div class="t m0 x2 h4 y29 ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>在过去 40<span class="_"> </span>多年<span class="_ _2"></span>,人们开发研制了<span class="_ _2"></span>几十种计算机语<span class="_ _2"></span>言,但是仅有少数几<span class="_ _2"></span>种得到了广泛应用<span class="_ _2"></span>。这就提示</div><div class="t m0 x2 h4 y2a ff2 fs0 fc0 sc0 ls0 ws0">我们选择一个合适的<span class="_ _2"></span>语言系统并不容易<span class="_ _2"></span>。在小型嵌入式<span class="_ _2"></span>系统中,通常只有一<span class="_ _2"></span>个微处理器,并且<span class="_ _2"></span>其主要工作</div><div class="t m0 x2 h4 y2b ff2 fs0 fc0 sc0 ls0 ws0">往往不是计算,而是<span class="_ _2"></span>控制,应选择控制<span class="_ _2"></span>能力较强的语言<span class="_ _2"></span>。在大型嵌入式系统<span class="_ _2"></span>中,往往会有多个<span class="_ _2"></span>微处理器或</div><div class="t m0 x2 h4 y2c ff2 fs0 fc0 sc0 ls0 ws0">计算机并行工作,<span class="_ _4"></span>构成多机系统。<span class="_ _1"></span>它们中有些工作于真正的嵌入式模式,<span class="_ _4"></span>有的则为纯粹的信息处理。<span class="_ _4"></span>此时,</div><div class="t m0 x2 h4 y2d ff2 fs0 fc0 sc0 ls0 ws0">对系统的编程就变得<span class="_ _2"></span>相当复杂,不同的<span class="_ _2"></span>任务可能会用不<span class="_ _2"></span>同的语言编程。因此<span class="_ _2"></span>,大型系统往往是<span class="_ _2"></span>一个多语言</div><div class="t m0 x2 h4 y2e ff2 fs0 fc0 sc0 ls0 ws0">系统。对于这种"混合"系统的语言选择更应慎重考虑。 </div><div class="t m0 x2 h4 y2f ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>目前,在嵌入式<span class="_ _2"></span>系统开发过程中使<span class="_ _2"></span>用的语言种类很<span class="_ _2"></span>多,但仅有少数几种<span class="_ _2"></span>语言得到了比较广<span class="_ _2"></span>泛的应用。</div><div class="t m0 x2 h4 y30 ff2 fs0 fc0 sc0 ls0 ws0">本文选择了 Ada、C/C++、Modula-2<span class="_ _5"> </span>作为讨论对象,并对<span class="_ _5"> </span>Java<span class="_ _5"> </span>作简要介绍。 </div><div class="t m0 x2 h4 y31 ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>Ada<span class="_ _6"> </span>语言是<span class="_ _6"> </span>20<span class="_ _6"> </span>世纪<span class="_ _6"> </span>70<span class="_ _6"> </span>年代美国国防部开发并投入使用的功能强大的通用系统开发语言,<span class="_ _7"></span>最初为<span class="_ _6"> </span>Ada83。</div><div class="t m0 x2 h4 y32 ff2 fs0 fc0 sc0 ls0 ws0">它支持模块化、独立<span class="_ _2"></span>编译、协处理等功<span class="_ _2"></span>能。其可靠性、<span class="_ _2"></span>可维护性、可读性都<span class="_ _2"></span>是相当好的。后来<span class="_ _2"></span>,为了更好</div><div class="t m0 x2 h4 y33 ff2 fs0 fc0 sc0 ls0 ws0">地支持<span class="_ _5"> </span>OOP<span class="_ _4"></span>(Object-Oriented <span class="_ _8"></span>Programming)<span class="_ _4"></span>,<span class="_ _4"></span>对其进行了改进,<span class="_ _4"></span>形成了目前广泛使用的<span class="_ _5"> </span>Ada95。<span class="_ _4"></span>使用<span class="_ _5"> </span>Ada</div><div class="t m0 x2 h4 y34 ff2 fs0 fc0 sc0 ls0 ws0">语言可以大大改善系统的清晰性、<span class="_ _1"></span>可靠性、<span class="_ _1"></span>可维护性等性能指标[2,3]。<span class="_ _1"></span>它是美国国防部指定的唯一一种可</div><div class="t m0 x2 h4 y35 ff2 fs0 fc0 sc0 ls0 ws0">用于军用系统开发的语言。 </div><div class="t m0 x2 h4 y36 ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>C<span class="_ _5"> </span>语言是由<span class="_ _5"> </span>Dennis <span class="_ _1"></span>Richie<span class="_ _5"> </span>于<span class="_ _5"> </span>1972<span class="_ _5"> </span>年在<span class="_ _5"> </span>AT&Bell<span class="_ _5"> </span>实<span class="_ _2"></span>验室研究成功并投入使用的系统编程语言。其设计</div><div class="t m0 x2 h4 y37 ff2 fs0 fc0 sc0 ls0 ws0">目标是使<span class="_ _5"> </span>C<span class="_ _5"> </span>既具有汇编语言的效率,又具有高级语言的易编程性。其最具代表性的应用是<span class="_ _5"> </span>UNIX<span class="_ _5"> </span>操作系统。</div><div class="t m0 x2 h4 y38 ff2 fs0 fc0 sc0 ls0 ws0">从<span class="_ _5"> </span>20<span class="_ _9"> </span>世纪<span class="_ _5"> </span>80<span class="_ _9"> </span>年代中期<span class="_ _5"> </span>C<span class="_ _9"> </span>语言涉足实时系统后,受到了普遍欢迎。目前是使用最广泛的嵌入式系统编程语</div><div class="t m0 x2 h4 y39 ff2 fs0 fc0 sc0 ls0 ws0">言。C++是由<span class="_ _5"> </span>Bjarne <span class="_ _1"></span>Stroustrup 于<span class="_ _5"> </span>1995<span class="_ _5"> </span>年在<span class="_ _5"> </span>Bell<span class="_ _5"> </span>实验室研制成功并投入使用的。C++在支持现代软件工</div><div class="t m0 x2 h4 y3a ff2 fs0 fc0 sc0 ls0 ws0">程、<span class="_ _4"></span>OOP、<span class="_ _4"></span>结构化等方面对<span class="_ _5"> </span>C<span class="_ _5"> </span>进行了卓有成效的改进,<span class="_ _4"></span>但在程序代码容量、<span class="_ _4"></span>执行速度、<span class="_ _4"></span>程序复杂程度等方面</div><div class="t m0 x2 h4 y3b ff2 fs0 fc0 sc0 ls0 ws0">比<span class="_ _5"> </span>C<span class="_ _5"> </span>语言程序性能差一些[2,4,5]。 </div><div class="t m0 x2 h4 y3c ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>Modula-2<span class="_ _5"> </span>是由<span class="_ _5"> </span>Nicklans <span class="_ _8"></span>Wirth<span class="_ _5"> </span>在<span class="_ _5"> </span>70<span class="_ _5"> </span>年代后期根据<span class="_ _5"> </span>Pascal 和<span class="_ _5"> </span>Modula<span class="_ _5"> </span>开发的系统设计语言。<span class="_ _1"></span>其主要<span class="_ _2"></span>目</div><div class="t m0 x2 h4 y3d ff2 fs0 fc0 sc0 ls0 ws0">标是在模块化、系统编程、协同处理等方面对<span class="_ _9"> </span>Pascal 进行改进。Modula-2<span class="_ _a"> </span>具有很强的类型检查能力和丰</div><div class="t m0 x2 h4 y3e ff2 fs0 fc0 sc0 ls0 ws0">富的低级功能支持。因此,可用它设计一个完整的实时程序而不用汇编语言的支持。Modula-3<span class="_ _b"> </span>是<span class="_ _b"> </span>1988<span class="_ _b"> </span>年</div><div class="t m0 x2 h4 y3f ff2 fs0 fc0 sc0 ls0 ws0">由<span class="_ _5"> </span>DEC(Digital <span class="_ _4"></span>Equipment <span class="_ _1"></span>Company)和<span class="_ _5"> </span>ORC(Olivetti <span class="_ _4"></span>Research <span class="_ _4"></span>Center)根据<span class="_ _5"> </span>Modula-2<span class="_ _5"> </span>开发研制并投</div><div class="t m0 x2 h4 y40 ff2 fs0 fc0 sc0 ls0 ws0">入使用的系统开发语言。<span class="_ _4"></span>目标是设计一个功能强大但结构简单的通用编程语言。<span class="_ _1"></span>它在协同处理、<span class="_ _4"></span>OOP、<span class="_ _4"></span>自动</div><div class="t m0 x2 h4 y41 ff2 fs0 fc0 sc0 ls0 ws0">垃圾收集以及对<span class="_ _5"> </span>C<span class="_ _5"> </span>语言和<span class="_ _5"> </span>UNIX<span class="_ _5"> </span>的支持等方面对<span class="_ _5"> </span>Modula-2<span class="_ _5"> </span>进行了改进[6]。 </div><div class="t m0 x2 h4 y42 ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>考察一门语言是<span class="_ _2"></span>否适用,需要从多<span class="_ _2"></span>个方面进行考虑<span class="_ _2"></span>。不同语言,都有自<span class="_ _2"></span>己的特色。很难将<span class="_ _2"></span>其全面进行</div><div class="t m0 x2 h4 y43 ff2 fs0 fc0 sc0 ls0 ws0">比较。另外,任何一<span class="_ _2"></span>门语言的运行特性<span class="_ _2"></span>都与运行环境密<span class="_ _2"></span>切相关,因此,选择<span class="_ _2"></span>语言时,应综合考<span class="_ _2"></span>虑。为叙述</div><div class="t m0 x2 h4 y44 ff2 fs0 fc0 sc0 ls0 ws0">方便,我们把语言的性能划分为基本性能和运行性能两个方面进行分析。 </div><div class="t m0 x2 h4 y45 ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>(1) 基本性能 </div><div class="t m0 x2 h4 y46 ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>一门语言的基本<span class="_ _2"></span>性能主要是指语言<span class="_ _2"></span>本身的固有特性<span class="_ _2"></span>,或称静态特性,即<span class="_ _2"></span>构成语言的组成部<span class="_ _2"></span>分所具有的</div><div class="t m0 x2 h4 y47 ff2 fs0 fc0 sc0 ls0 ws0">特性。<span class="_ _4"></span>它不仅决定着语言的可用性、<span class="_ _4"></span>适用性、<span class="_ _0"></span>可靠性等,<span class="_ _4"></span>而且对应用程序的开发产量、<span class="_ _4"></span>便携性、<span class="_ _0"></span>可维护性、</div><div class="t m0 x2 h4 y48 ff2 fs0 fc0 sc0 ls0 ws0">安全性也有一定影响<span class="_ _2"></span>。它是一门语言的<span class="_ _2"></span>核心和基石。考<span class="_ _2"></span>查语言的基本性能主<span class="_ _2"></span>要从以下几个方面<span class="_ _2"></span>入手:与汇</div><div class="t m0 x2 h4 y49 ff2 fs0 fc0 sc0 ls0 ws0">编语言 /机器语言的<span class="_ _2"></span>接口,直接寻址,<span class="_ _2"></span>对硬件的控制,<span class="_ _2"></span>位操作,中断处理,<span class="_ _2"></span>指针操作,数据类<span class="_ _2"></span>型的支持及</div><div class="t m0 x2 h4 y4a ff2 fs0 fc0 sc0 ls0 ws0">检测,控制结构的支<span class="_ _2"></span>持及检测,模块化<span class="_ _2"></span>支持,独立编译<span class="_ _2"></span>支持,任务结构支持<span class="_ _2"></span>,异常事件处理,<span class="_ _2"></span>数学模型支</div><div class="t m0 x2 h4 y4b ff2 fs0 fc0 sc0 ls0 ws0">持,语法和整体结构,多任务支持,标准程序库,面向对象编程(OOP)结构等。 </div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://csdnimg.cn/release/download_crawler_static/11847956/bg3.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x2 h2 y2 ff1 fs0 fc0 sc0 ls0 ws0"> </div><div class="t m0 x2 h4 y28 ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>(2) 运行性能 </div><div class="t m0 x2 h4 y29 ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>语言的运行性能<span class="_ _2"></span>是指其应用软件在<span class="_ _2"></span>实际运行时所表<span class="_ _2"></span>现出来的行为特点,<span class="_ _2"></span>是一门语言的动态<span class="_ _2"></span>特性。它对</div><div class="t m0 x2 h4 y2a ff2 fs0 fc0 sc0 ls0 ws0">语言的适用性、实用<span class="_ _2"></span>性及可用性影响极<span class="_ _2"></span>大。主要表现在<span class="_ _2"></span>任务期限设置、代码<span class="_ _2"></span>执行时间的简单评<span class="_ _2"></span>价,调度策</div><div class="t m0 x2 h4 y2b ff2 fs0 fc0 sc0 ls0 ws0">略选择,时序分析支持等几个方面。由于语言的运行性能和运行环境密切相关,如 CPU<span class="_ _5"> </span>速度、内存大小、</div><div class="t m0 x2 h4 y2c ff2 fs0 fc0 sc0 ls0 ws0">硬盘速度、操作系统<span class="_ _2"></span>、编译环境等。因<span class="_ _2"></span>此,评价语言的<span class="_ _2"></span>运行性能应和具体的<span class="_ _2"></span>应用环境联系起来<span class="_ _2"></span>,任何理论</div><div class="t m0 x2 h4 y4c ff2 fs0 fc0 sc0 ls0 ws0">上的评价都没有多大的实际意义。故本文不再讨论这方面的内容。 </div><div class="t m0 x2 h4 y4d ff2 fs0 fc0 sc1 ls1 ws0">三、 常用嵌入式系统<span class="_ _0"></span>高级编程语言基本<span class="_ _0"></span>性能 <span class="sc0 ls0"> </span></div><div class="t m0 x2 h4 y4e ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>一门语言的基本<span class="_ _2"></span>性能是组成这门语<span class="_ _2"></span>言的基本要素,<span class="_ _2"></span>是决定其性能好坏的<span class="_ _2"></span>关键因素。因此,<span class="_ _2"></span>认真研究语</div><div class="t m0 x2 h4 y4f ff2 fs0 fc0 sc0 ls0 ws0">言的基本性能是非常<span class="_ _2"></span>必要的。下面对上<span class="_ _2"></span>述几种流行的嵌<span class="_ _2"></span>入式系统编程语言的<span class="_ _2"></span>基本性能进行简单<span class="_ _2"></span>的分析和比</div><div class="t m0 x2 h4 y50 ff2 fs0 fc0 sc0 ls0 ws0">较 [7]。 </div><div class="t m0 x2 h4 y51 ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>(1) 与汇编语言和机器代码的接口 </div><div class="t m0 x2 h4 y52 ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>在 Ada<span class="_"> </span>语言<span class="_ _2"></span>中,可以通过子<span class="_ _2"></span>程序功能实现对汇<span class="_ _2"></span>编语言及机器代码的<span class="_ _2"></span>访问。标准程序<span class="_ _2"></span>包<span class="_"> </span>MACHINE-CODE</div><div class="t m0 x2 h4 y53 ff2 fs0 fc0 sc0 ls0 ws0">支持这一功能。在<span class="_ _5"> </span>C<span class="_ _9"> </span>中,汇编语言可以定义为一个<span class="_ _5"> </span>asm<span class="_ _9"> </span>模块嵌入在<span class="_ _5"> </span>C<span class="_ _9"> </span>源代码中,也可以编写成一个独立的</div><div class="t m0 x2 h4 y54 ff2 fs0 fc0 sc0 ls0 ws0">外部进程,用功<span class="_ _2"></span>能调用进行通讯。<span class="_ _2"></span>宏(Macros)也可以用来<span class="_ _2"></span>提供汇编语言操作<span class="_ _2"></span>。语言本身没有提<span class="_ _2"></span>供这方面</div><div class="t m0 x2 h4 y55 ff2 fs0 fc0 sc0 ls0 ws0">的机制,由编译器提供支持。 </div><div class="t m0 x2 h4 y56 ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>(2) 直接寻址 </div><div class="t m0 x2 h4 y57 ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>Ada<span class="_ _5"> </span>通过<span class="_ _9"> </span>SYSTEM<span class="_ _5"> </span>包中的<span class="_ _9"> </span>Address<span class="_ _5"> </span>类寻址绝对地址;C/C++ 通过指针完成绝对寻址,在<span class="_ _9"> </span>C++中也可以通</div><div class="t m0 x2 h4 y58 ff2 fs0 fc0 sc0 ls0 ws0">过<span class="_ _5"> </span>Peek、Poke<span class="_ _5"> </span>操作完成存储器寻址;Modula-2 通过<span class="_ _5"> </span>SYSTEM<span class="_ _5"> </span>模块支持绝对寻址。 </div><div class="t m0 x2 h4 y59 ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>(3) 对硬件的访问和控制 </div><div class="t m0 x2 h4 y5a ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>Ada<span class="_ _a"> </span>通过表述从句把<span class="_ _9"> </span>Ada<span class="_ _a"> </span>代码映射到具体器件;C/C++通过指针完成对硬件的操作;在<span class="_ _a"> </span>Modula-2<span class="_ _9"> </span>中器</div><div class="t m0 x2 h4 y5b ff2 fs0 fc0 sc0 ls0 ws0">件被标识为具有绝对地址的对象,通过赋值语句访问这些对象。 </div><div class="t m0 x2 h4 y5c ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>(4) 位操作 </div><div class="t m0 x2 h4 y5d ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>Ada 具体的位可以在<span class="_ _2"></span>表述从句中指明<span class="_ _2"></span>,多个独立位也可组<span class="_ _2"></span>成一个逻辑字,通<span class="_ _2"></span>过逻辑操作对它<span class="_ _2"></span>们进行加</div><div class="t m0 x2 h4 y5e ff2 fs0 fc0 sc0 ls0 ws0">工处理。<span class="_ _8"></span>位操作是<span class="_ _5"> </span>C<span class="_ _5"> </span>的强项,<span class="_ _c"></span>逻辑操作、<span class="_ _c"></span>移位操作均可实现位操作;<span class="_ _8"></span>在<span class="_ _5"> </span>C++中,<span class="_ _c"></span>还可以通过定义"bitfields"</div><div class="t m0 x2 h4 y5f ff2 fs0 fc0 sc0 ls0 ws0">结构实现更多的位操作功能。<span class="_ _7"></span>Modula-2<span class="_ _d"> </span>用"SET"结构处理位操作。<span class="_ _7"></span>在嵌入式应用中最有用的结构是"BITSET",</div><div class="t m0 x2 h4 y60 ff2 fs0 fc0 sc0 ls0 ws0">通过它可以方便地实现各种位操作。 </div><div class="t m0 x2 h4 y61 ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>(5) 中断处理 </div><div class="t m0 x2 h4 y62 ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>Ada<span class="_"> </span>通过中断处理任<span class="_ _2"></span>务实现中断处理<span class="_ _2"></span>。一个中断任务和一<span class="_ _2"></span>个中断矢量密切相<span class="_ _2"></span>关,在中断矢量<span class="_ _2"></span>地址处存</div><div class="t m0 x2 h4 y63 ff2 fs0 fc0 sc0 ls2 ws0">放中断任务入口地址。C/C++语言本身<span class="ls3">没有提供标准的中断处理机制,用户可以自行处理。Modula-2<span class="_"> </span>通过</span></div><div class="t m0 x2 h4 y64 ff2 fs0 fc0 sc0 ls0 ws0">SYSTEM<span class="_ _5"> </span>模块中的<span class="_ _5"> </span>IOTRANSFER<span class="_ _5"> </span>进程实现中断处理。用户也可以编写自己的中断处理程序。 </div><div class="t m0 x2 h4 y65 ff2 fs0 fc0 sc0 ls0 ws0"> <span class="_"> </span> <span class="_"> </span>(6) 指针 </div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>