2017-02-11 8 views
0

私はちょうどDSP命令のような機能を進めているARMのCortex-M4を、学ぶために始めている、......ARMのCortex M4曲の並び替えunsigned int型の変数

uint32_t my_rearrange(uint32_t value){ 
    uint32_t value_high = (value & 0xffff0000)>>16; 
    uint32_t value_low = (value & 0x0000ffff); 
    return (value_low<<16)|value_high; 
} 

これは簡単です符号なしint変数を再配置するためのコード。
cortex-M4で最高のパフォーマンスまたは最速の実行を実現するには、この機能を調整する必要はありますか?この機能でDSP命令を使用する方法はありますか?

答えて

0

これにはdsp命令を使用する必要はありません。あなたがしているように見えるのは、16ビットの回転だけです。コンパイラはこれを認識し、RORを生成する必要があります。い-O3 -std=c++11 -march=armv7-m -mtune=cortex-m4 -mthumbフラグ、およびそれがインライン化された場合は、それをスピードアップすることができる唯一の方法は次のようになりgenerates

my_rearrange(unsigned long): 
    ror  r0, r0, #16 
    bx  lr 

あなたのコードのためとGCC 5.4.1。

関連する問題