百摩网
当前位置: 首页 生活百科

汇编语言程序的开发过程(汇编语言的4种用法)

时间:2023-05-30 作者: 小编 阅读量: 1 栏目名: 生活百科

很多嵌入式开发人员认为应该避免使用汇编语言,原因是它特定于所使用的处理器架构,难以阅读、理解和维护。我们检查的代码片段可能需要在使用前进行修改。许多现代处理器都有断点汇编指令,使用汇编代码执行该指令是完全合适的。对于ArmCortex-M处理器,使用类似于STM32CubeIDE的IDE,这样的汇编实现可能如下所示:当到达该指令时,处理器将停止执行。这些功能可能因一个IDE而异。

很多嵌入式开发人员认为应该避免使用汇编语言,原因是它特定于所使用的处理器架构,难以阅读、理解和维护。今天,我们将看看仍然适合使用汇编语言的几个领域以及该代码的样子。

在我们查看仍然可以使用汇编语言的每个领域之前,请记住,这些汇编指令如何集成到代码库中将根据所使用的开发环境而有所不同。通常有一些自定义编译器函数用于让编译器语言知道正在使用汇编指令,例如_asm()。我们检查的代码片段可能需要在使用前进行修改。



汇编用法 1 – 执行断点指令

每当我开始一个新项目时,我在实施过程中做的第一件事就是将断点的汇编指令放在 CPU 故障、看门狗超时和特殊 RTOS 事件(例如 malloc 失败)的中断服务例程中(即使我避免使用malloc)。这样做的原因是我想在意外到达这些功能之一时收到通知,但我不想管理这些断点。许多现代处理器都有断点汇编指令,使用汇编代码执行该指令是完全合适的。

对于 Arm Cortex-M 处理器,使用类似于 STM32 CubeIDE 的 IDE,这样的汇编实现可能如下所示:



当到达该指令时,处理器将停止执行。

汇编用法 2 – 从引导加载程序到应用程序的转换

嵌入式开发人员应该考虑使用汇编语言的第二个领域是从引导加载程序到应用程序代码的过渡点。在许多系统中,引导加载程序是第一个执行的应用程序。它设置处理器、验证内存并可能执行其他几个功能。但在某些时候,引导加载程序让位并跳转到主应用程序。为了使跳转成功,处理器中的许多组件需要设置为其初始状态,例如系统堆栈,然后需要加载应用程序的复位向量的函数指针。

当我将汇编语言集成到应用程序中时,我经常使用 IDE 的汇编功能。这些功能可能因一个 IDE 而异。例如,下面是一个函数,它接受应用程序的复位向量所在的起始地址位置。此代码是使用 NXP 特定工具链为 NXP Kinetis-L 处理器编写的:



另一个相同功能的示例,但在这种情况下,代码是为德州仪器 C2000 处理器编写的:



同样,这提供了对处理器的低级控制,以确保一切都回到原点,然后应用程序可以从头开始执行。

汇编用法 3 – 控制循环中的代码优化

在某些情况下,可能需要在使用汇编的高频控制循环中优化代码。在装配中手动编码快速控制回路过去很常见,虽然有时这仍然是合适的,但在当今拥有超快处理器和使用复杂优化技术的编译器的嵌入式开发环境中,汇编语言使用的最后一种情况正在消失。

汇编用法 4 – 教授微控制器基础知识

虽然今天许多人都希望从可能的最高抽象级别开始,但对于嵌入式系统来说,开发人员了解底层发生的事情至关重要,并且没有比在汇编中编写软件更好的学习方法了。

虽然不应该花很多时间在编写汇编上,但刚接触嵌入式系统的开发人员应该编写一些非常基本的应用程序,例如“Hello World”应用程序和闪烁 LED 应用程序,以了解如何初始化处理器,控制寄存器并稍微熟悉底层指令集。如果开发人员了解底层架构,这些细节可以帮助开发人员用 C/C编写更高效的代码,而真正理解它的唯一方法就是使用它自己的自然语言来使用它。

总结

今天在大多数情况下应该避免使用汇编语言,但是当使用它时,它可以提供一种机制来非常精细地控制应用程序的行为方式。如果你确实决定使用某种汇编语言,请确保你大量记录该代码区域,以便你自己和其他嵌入式开发人员将来更容易维护该代码。


了解更多

    推荐阅读
  • 纪念币为什么(是时候讲清楚纪念币了)

    纪念币为什么本文讲的纪念币,指中国人民银行批准印制的纸币或金属币,主要从法律地位、银行策略和百姓投资价值三方面分析。并且会影响观赏性。所以综合分析,有没有投资价值,请兄台自己下决断,我不敢多说!

  • 点读笔新手入门(点读笔之亲妈测评帖)

    英文阅读,本身是阅读,对小朋友们来说,也是读故事,自然是喜欢的,只是中间多了语言这一关。这之间的断层越大,孩子对英文阅读的兴趣可能就越小。如果孩子阅读的内容是低于自己认知水平的,常见情况是,故事情节过于简单,小朋友还是会觉得无趣的,所以尽早开始英文阅读,就可以避免这些麻烦。再次,有了点读笔,可以解放常年辛苦、磨破嘴皮子做亲子阅读的老母亲。How有了tools,下一步就是阅读了。

  • 高压隔膜式蓄能器试用方法(如何操作)

    高压隔膜式蓄能器试用方法蓄能器充气之前,使蓄能器进油口稍微向上,灌入壳体容积约1/10的液压油,以便润滑,将充气工具的一端连在蓄能器充气阀上,另一端与氮气瓶相接通。打开氮气瓶上的截止阀,调节其出口压力到0.05~0.1MPa,旋转充气工具上的手柄,徐徐打开蓄能器充气阀阀芯,缓慢充入氮气,就会慢慢打开装配时被折叠的气囊,使气囊逐渐胀大,直到菌形阀关闭。切勿一下子把气体充入蓄能器,以避免充气过程中因气囊膨胀不均匀而破裂。

  • 如何查询流量剩余(怎么查询流量)

    跟着小编一起来看一看吧!如何查询流量剩余直接拨打手机电话卡所对应的运营商电话:移动运营商电话为10086,联通用户为10010,电信用户为10000,拨打完客服电话之后根据语音提示操作或者直接转人工客服进行咨询。

  • 播放游戏游戏简笔画(电视里的画画游戏大全)

    播放游戏游戏简笔画怎么画?小朋友做游戏的情景简笔画三位小朋友在玩捉迷藏游戏的简笔画图片,下面我们就来选几个播放游戏游戏简笔画?我们一起去看看这些简笔画吧!

  • 2022春季望月湖街道社区医院接种查验补种最新流程

    望月湖街道社区卫生服务中心2022年春季接种查验补种工作已展开,查验对象为望月湖、银盆岭街道辖区所有中小学、幼儿园在校在园学生,以下是具体的事项,供大家进行参考。如拒绝接种需家长在回执单上签字。完成查验后将查验回执交给班主任,班主任统一交给卫生老师。

  • 用丹田说话的窍门儿(丹田呼吸法的好处)

    用丹田说话的窍门儿如果想学用丹田说话,需要练习腹式呼吸,然后将腹式呼吸运用到说话和唱歌中,即可做到“丹田发声”。呼气,腹部自然凹进,向内朝脊柱方向收,胸部保持不动。最大限度地向内收缩腹部,把所有废气从肺部呼出去,这样做时,横膈膜自然而然地升起。丹田呼吸属于深呼吸,有利于调节气息,防止大脑缺氧休克,开发大脑潜能。能使人的意念集中于身体,有利于用意来支配形体,达到自己想要的效果。

  • 中考英语需要准备哪些类的作文(阅读是英语学习的重要途径)

    阅读是英语学习的重要途径阅读让休闲时光更加充实,也是让我们走进他人故事的桥梁喜欢读书,就等于把生活中寂寞的辰光,换成巨大享受的时刻如果你是一位家长,家里有着正值青春期的孩子,相信多阅读也是能让双方掌握良好的沟通技巧图片来源于。

  • 如何选择调养气血不足的食物(气血不足怎样选择食物调养)

    食用芝麻,可以促进肾生血、肝藏血和脾统血的功能。其中铁元素的含量极高,是猪肝的7.4倍。桑葚味甘性寒,入心、肝、肾三经,益肾脏而固精,久服黑发明目,是滋阴、补血、生津、润燥、通便的佳品,药用价值极高,宜滋补养生,改善体虚和亚健康。需要注意的是,桑葚也是一种含糖量比较高的食物,糖尿病患者不能吃。龙眼性温,味甘,具有补益心脾、养血安神的功能。动物肝脏含有丰富的铁,是最理想的补血食物之一。

  • 素描静物线条运笔技巧(素描静物线条运笔技巧的详细介绍)

    此种线条容易衔接,利于表现明暗调子的变化。注意这样的线在衔接上会造成明显的接口,也容易造成线条的杂乱。中锋保持力度均匀、速度稍慢用笔,笔意内敛含蓄。侧锋运笔、轻巧随意,这样的曲线利于表现毛质的形体。用笔锋侧面运笔、运笔力度不均可直接表现出带明暗变化的面。用排线组合成面再用纸笔笔锋平擦,通常用于作统一色块处理。用手沿排线方向重擦,方便刻画亮面部位调子的微妙变化。