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

汇编语言程序的开发过程(汇编语言的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编写更高效的代码,而真正理解它的唯一方法就是使用它自己的自然语言来使用它。

总结

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


了解更多

    推荐阅读
  • 什么东西可以补肾增精(补肾精才是壮阳)

    补肾精才是壮阳不久前,媒体报道了两例因滥用壮阳药引发的事故一位28岁的先生在服用壮阳药后的次日凌晨出现头晕、恶心、心慌等症状,心跳达到140次/分钟,嘴上、脸上出现多处红肿,医生诊断为疑似药物中毒另一位有高血压史的。

  • 横塘范成大古诗(横塘原文和译文介绍)

    接下来我们就一起去了解一下吧!横塘范成大古诗原文:南浦春来绿一川,石桥朱塔两依然。年年送客横塘路,细雨垂杨系画船。在每年送朋友上路的横塘里,蒙蒙细雨中,即将远行的画船栓在岸边的垂杨柳上。

  • 洗涤和漂洗有什么区别?(洗涤和漂洗的不同之处)

    接下来我们就一起去了解一下吧!洗涤和漂洗有什么区别程度不同。漂洗主要是清洁衣服,旨在去除衣物的味道和表面附着的脏东西,或稀释衣物上洗涤液的浓度。而洗涤是比较彻底的洗干净衣服,往往需要加入洗衣液或消毒液等,其清洁力度会更大。而洗涤则为进水、清洗、脱水的顺序,且该工序需循环两遍,第一遍的进水往往是携带着洗涤液

  • 电视剧一路繁花相送第二集(电视剧一路繁花相送)

    今天是2021年8月7日农历六月二十九星期六,今天重点推介的是新疆卫视和湖北卫视黄金时间播出的两部电视剧。本剧是由徐兵编剧及执导,孙红雷、张鲁一、尹昉、万茜、李纯、胡静、秦汉、赵峥主演的红色传奇剧。由李伟执导,王朝柱编剧,唐国强、刘劲、王伍福、马晓伟、张再新等人主演。宁夏卫视今天早上09:15分36集革命历史电视剧《彭德怀元帅》这部电视剧由宋业明执导,董勇、杨童舒、唐国强、罗钢、刘劲、王伍福主演。

  • 食用小苏打的作用 食用小苏打的作用泡肉

    1、小苏打加在肉里,会使肉的纤维被软化,肉会变得更加松软。

  • 王者荣耀表现分和荣耀战力有关系吗(看看答案吧)

    王者荣耀表现分和荣耀战力有关系吗?下面更多详细答案一起来看看吧!王者荣耀表现分和荣耀战力有关系吗有关系,不同段位表现分不一样,官方的确有公布过各个段位的表现分上限,最初版本王者上限是一万分,但现在只有2000分了,官方后面只是说了调整表现分上限但没有具体数字。星耀上限12王者1-10星上限1500、10星-20星上限17王者21星以上上限2000。

  • 行政事业单位的往来结算票据是否可以当发票使用

    第八条下列行为,不得使用资金往来结算票据:(一)行政事业单位按照自愿有偿的原则提供下列服务,其收费属于经营服务性收费,应当依法使用税务发票,不得使用资金往来结算票据。

  • 碱基被替换氨基酸序列没改变的原因(酶活性降低会怎样)

    以下内容大家不妨参考一二希望能帮到您!碱基被替换氨基酸序列没改变的原因不一定是因为氨基酸序列没有变化,也可能是氨基酸替换后但不影响酶的活性。酶活性降低一半,有多种可能原因,不一定肽键数减少50%所致。编码酶X的基因发生某个碱基替换,若替换后导致转录的终止密码位置提前,则酶Y的氨基酸数目大大减少,活性受到很大影响。

  • gre中写作算分吗(如何估计自己的总字数)

    GRE写作尽量保证写到520字以上,我来为大家科普一下关于gre中写作算分吗?gre中写作算分吗GRE写作尽量保证写到520字以上#GRE#首先,我们必须了解GRE写作的评分是分为了三个维度:内容,逻辑和语言能力。因为这方面的评分要求学生提供充分且强有力的论证。同学们如果经过了托福写作的洗礼,按理应该能达到450字左右的篇幅,加上对GRE写作题库的熟悉整理,以及写作语料的准备,想要达到520字以上的篇幅就不难的啦。

  • 不可错过的十大质量好的小说推荐(推荐几本不同类型的精品小说)

    找了两年,现实世界中没有妖怪,想炼妖没得原材料;壶中天地中被困在一隅,周围全是打不过的树精,寸步难行。作者对日本的风土人情有深入的了解,书中描写的日本社会面貌风俗习惯读起来感觉很真实。六王须毕,四海终一,而天下归于秦。坐视百代都行秦政法?天朝扶贫干部穿越到战国末年,制定《秦始皇改造计划》,想要通过教导幼年嬴政马哲理论来改变历史走向促进生产力发展的故事。