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

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

总结

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


了解更多

    推荐阅读
  • 完美关系在那个台几点播出(你知道吗)

    接下来我们就一起去研究一下吧!完美关系在那个台几点播出当代都市题材电视剧《完美关系》的播出时间:2020年2月18日,首播平台:湖南卫视、爱奇艺、腾讯视频。若是VIP会员24点更新,非会员次日24点观看,2018年7月拍摄,由浙江金溪影视有限公司制作,制作周期12个月,该剧由安建导演,主演:黄轩,佟丽娅,陈数。

  • 堂哥的儿子是我的外甥还是侄子(堂哥的儿子是我的外甥还是侄子呢)

    亦称朋友的儿子,属于客套话,而哥哥的小孩其实就是弟兄的孩子,所以叫“侄子”最恰当不过。姑侄对称,与亲兄弟之子无关。在此之前,兄弟之子称为兄子和弟子,多用作亲属的“转述叙称”称谓。

  • 晨跑和夜跑哪个更减肥瘦身(晨跑和夜跑哪个减肥更快)

    但是对于减肥的人而言,还是要有所限制。

  • 施瓦辛格成功绝非偶然(从穷小子到国际巨星)

    在加入美国国籍后,他就报名参加了美国举办的国际健美比赛,而在本场比赛上,施瓦辛格凭借着接近完美的男性身材而获得了比赛冠军,也因此得到了健美先生的称号。施瓦辛格心里一直有一个梦想——成为美国总统。施瓦辛格弃影从政,成功当选州长施瓦辛格在健美界和影坛所取得的成就也使得他闻名世界,他所积攒下的财富也使得他跻身亿万富翁。另外施瓦辛格还提出了使用清洁能源等政策,为此他还放弃

  • 汉服简介(汉服的介绍)

    与汉人一词类似,汉服中的“汉”字的词义外延亦存在着由汉朝扩大为整个民族指称的过程。汉服“始于黄帝,备于尧舜”,源自黄帝制冕服。定型于周朝,并通过汉朝依据四书五经形成完备的冠服体系,成为神道设教的一部分。汉服还通过华夏法系影响了整个汉文化圈,亚洲各国的部分民族如日本、朝鲜、越南、蒙古、不丹等等服饰均具有或借鉴汉服特征。

  • 山楂的保存方法(山楂的保存方法简述)

    下面内容希望能帮助到你,我们来一起看看吧!山楂的保存方法对于已经切开的山楂,想要保存可以放进盐水中,也可放在阳光下晾晒,让水分尽快蒸发掉。完整的山楂保存可以装入塑料袋中,扎紧袋口放进冰箱冷藏。在容器底部放一层细沙将山楂装入,再放一层细沙密封保存。最简单的方法是放入保鲜膜中,把里面空气放干净,密封袋口保存。

  • 象棋中的马怎么算撇脚(撇脚的具体情况如下)

    以下内容大家不妨参考一二希望能帮到您!象棋中的马怎么算撇脚比如马要向前跳!那马前面也就是马头上如果有棋子就是挡马脚!无论马往哪边跳!马前面有一颗棋子挡着,比如想向前跳,紧挨着马的正前方有一颗棋子,都叫撇脚马,同理,你想向左跳,紧挨着马的左方有一颗棋子也叫撇脚马。

  • 赘婿楼舒婉为什么要杀死家人 赘婿楼舒婉报仇了吗

    在对方强占檀儿时,被宁毅给撞见了,一向有仇必报的他,自然要将楼家给灭掉。之前宣威营的小头目绑走了苏檀儿,最终卖给了楼书恒。之后楼舒婉制作了防水衣送给了刘西瓜,刘西瓜又给了宁毅。之后宁毅发现了防水衣的秘密,急冲冲的跑到了楼家的布店,刚好撞见楼书恒在欺负苏檀儿。如此看来,这一切都是楼舒婉布下的局,就是为了弄死自己的哥哥和父亲。之后他的所作所为,都是为了报复自己之前遭遇的不公。

  • 自制瓷砖胶(瓷砖胶配方及制作方法)

    接下来我们就一起去研究一下吧!自制瓷砖胶先将冷水按比例加入到容器内,开启搅拌机再将胶粉徐徐撒入,高速搅拌10-15分钟即为胶水。批重钙、滑石粉,每1000公斤水加107胶粉13-14公斤、杀菌防腐剂3公斤,或加入甲醛2.5-3公斤,制成胶水。批硅酸盐灰白水泥:每1000公斤水直接加入107胶粉10-11公斤,制成胶水。

  • 研教学评一体化(备教学)

    只有经历这一大循环的教学,才能呈现一种持续评价教与学的目标达成度、教与学的进步度、决定教与学的需求,并实现螺旋上升的态势,使教与学和质量评价更有意义。所以,在“备、教、学、评一体化”教学指导下的教学新格局,应该是一个高效的课堂。