技术热线: 4007-888-234

单片机开发:为何要避免使用汇编语言?

更新时间: 2020-10-16
阅读量:3733

对资深单片机开发人员来说经常提倡的一个开发技巧是,开发人员应避免使用汇编语言。避免使用汇编语言的原因是它特定于所使用的处理器体系结构,难以阅读,理解和维护。而且需要注意的是,在查看仍可以使用汇编语言的每个区域之前,这些汇编指令如何集成到代码库中将根据所使用的开发环境而有所不同。通常有一些自定义的编译器函数用于使编译器语言知道正在使用汇编指令,例如_asm(),我们检查的代码段在使用前可能需要进行修改。

但是,有四个适合使用汇编语言的地方:

一、执行断点指令

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

对于使用类似于STM32 CubeIDE的IDE的Arm Cortex-M处理器,此类组装实现可能如下所示:

__asm(“ bkpt”);

当到达上面这条指令时,处理器将停止执行。

二、从Bootloader过渡到应用程序

开发人员应该使用汇编语言的第二个领域是从引导加载程序到应用程序代码的过渡点。在许多系统中,引导加载程序是第一个执行的应用程序。它设置处理器,验证内存并可能执行其他一些功能。但是在某个时候,引导加载程序让步并跳转到主应用程序。为了成功完成该跳转,需要将处理器中的许多组件设置为它们的初始状态,例如系统堆栈,然后需要加载应用程序复位向量的功能指针。另外,当需要将汇编语言集成到应用程序中时,可以使用IDE的汇编函数。这些功能可能因IDE的不同而有所差异。

三、控制循环中的代码优化

在某些情况下,可能需要在高频控制循环中优化代码,这需要使用汇编语言。手工编码组装中的快速控制循环曾经很普遍。尽管有时这仍然是适当的,但在当今使用超快处理器和使用复杂的优化技术的编译器的开发环境中,你会发现使用汇编语言的情况将越来越少。

四、学习单片机基础知识

许多人刚开始涉足单片机开发时,实际上是被迫以汇编形式开发应用程序的。当时的单片机供应商不提供免费的C编译器,但是汇编语言工具是免费的。

我不认为应该花很多时间在汇编上,但是我认为单片机的开发人员应该会编写一些非常基本的应用程序,例如“ Hello World”应用程序和闪烁LED应用程序,以了解如何初始化处理器、控制寄存器,并稍微了解基础指令集。这些可以帮助开发人员理解C/C++的底层体系结构,并且真正理解该体系结构的唯一方法就是以其自身的自然语言进行处理,从而可以用C/C++编写效率更高的代码。

以上就是英锐恩单片机开发工程师分享的单片机开发过程中的为何避免使用汇编语言,且在一些地方应使用汇编语言的知识。英锐恩专注单片机应用方案设计与开发,同时提供8位单片机、16位单片机、32位单片机、运放芯片和模拟开关。如果你需要更多单片机方案产品的信息,请拨打官网电话:4007-888-234,或点击“在线咨询”,我们的客服人员将为你提供更详细的解答。

单片机方案开发