微控制器优化编程技巧
1. 何时使用汇编语言
汇编语言本质上是不可移植的,在 C++ 编程中应尽量避免使用。不过,在微控制器编程里,存在一些罕见情况需要用到汇编。一是因为汇编编程可能是完成当前编程任务的唯一途径;二是使用汇编能显著提升效率,比如对于频繁运行的时间关键序列,使用汇编就很有必要。
为了避免系统层和应用层受到不可移植性的影响,汇编代码应封装在软件架构的微控制器层中。对于只有几行的短汇编序列,可使用内联汇编,通过语言扩展将其直接集成到 C++ 编译器中。而对于超过 10 或 20 行的较长汇编序列,如扩展多任务调度器的部分代码,使用专门的汇编文件可能更合适。
GCC 的内联汇编语法使用特定于微控制器的汇编方言,用 GNU 汇编器(GAS)的语言表示。其他编译器也有类似的语言扩展,但语法可能不同。
内联汇编可方便地创建短内联函数,例如全局中断的启用和禁用、空操作等。示例代码如下:
namespace mcal
{
namespace irq
{
// Interrupt enable/disable.
inline void enable_all()
{ asm volatile ("sei"); }
inline void disable_all() { asm volatile ("cli"); }
}
}
namespace mcal
{
namespace cpu
{
// The no-operation.
inline void nop() { asm volatile ("nop"); }
}
}
调用部分或完全由汇编组成的 C
微控制器优化编程的十大技巧
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



