使用C++写嵌入式代码(使用模板) - 代码的优化

使用模板的特化或者偏特化技术可以指定在使用特定的模块时进行特殊优化。例如,有些MCU是将IO空间和存储空间分开的,在IO空间中操作是有特殊的指令的,并且可以提高速度,这时可以通过偏特化设备模板来优化这些设备。下面以AVR中的atmega系列芯片为例:

首先定义端口模板(在avr中端口寄存器一般都位于IO空间,所以使用端口设备举例)

template
class Port {
public:
  static void config(const byte mode){/*code here*/}
  static void write(const bit hl) {/*code here*/}
  /*... other members*/
};

其次定义优化的模板

template
class _Port {
public:
        __attribute__((always_inline, optimize("O3")))
        static void config(const byte mode) {
           /* code here */
        }
        /* other member */
}

第三,声明片特化或者全特化类

template<>
class Port :
        public m128::_Port<®isters::PINA, ®isters::PORTA, ®isters::DDRA, 0> {
};

这样,当使用端口A时编译器就可以使用优化后的代码了。

转载于:https://my.oschina.net/u/182236/blog/1926905

你可能感兴趣的:(使用C++写嵌入式代码(使用模板) - 代码的优化)