很多嵌入式开发人员认为应该避免使用汇编语言,原因是它特定于所使用的处理器架构,难以阅读、理解和维护。今天,我们将看看仍然适合使用汇编语言的几个领域以及该代码的样子。
在我们查看仍然可以使用汇编语言的每个领域之前,请记住,这些汇编指令如何集成到代码库中将根据所使用的开发环境而有所不同。通常有一些自定义编译器函数用于让编译器语言知道正在使用汇编指令,例如_asm()。我们检查的代码片段可能需要在使用前进行修改。
汇编用法 1 – 执行断点指令
每当我开始一个新项目时,我在实施过程中做的第一件事就是将断点的汇编指令放在 CPU 故障、看门狗超时和特殊 RTOS 事件(例如 malloc 失败)的中断服务例程中(即使我避免使用malloc)。这样做的原因是我想在意外到达这些功能之一时收到通知,但我不想管理这些断点。许多现代处理器都有断点汇编指令,使用汇编代码执行该指令是完全合适的。
对于 Arm Cortex-M 处理器,使用类似于 STM32 CubeIDE 的 IDE,这样的汇编实现可能如下所示:
当到达该指令时,处理器将停止执行。
汇编用法 2 – 从引导加载程序到应用程序的转换
嵌入式开发人员应该考虑使