Is a logical right shift by a power of 2 faster in AVR?

Wil*_*ill 7 c++ optimization avr atmega bit-shift

I would like to know if performing a logical right shift is faster when shifting by a power of 2

For example, is

myUnsigned >> 4
Run Code Online (Sandbox Code Playgroud)

any faster than

myUnsigned >> 3
Run Code Online (Sandbox Code Playgroud)

我很欣赏每个人的第一反应是告诉我,人们不应该担心像这样的小事,它使用正确的算法和集合来减少重要的数量级.我完全同意你的意见,但我真的想从嵌入式芯片(ATMega328)中挤出所有东西 - 我只是有一个性能转变,值得'哇喔!' 通过用位移替换除法,所以我向你保证这很重要.

Mar*_*n B 19

我们来看看数据表:

http://atmel.com/dyn/resources/prod_documents/8271S.pdf

据我所知,ASR(算术右移)总是移位一位,不能取位数移位; 它需要一个周期来执行.因此,向右移位n位将需要n个周期.两个人的行为与任何其他数字相同.


Cra*_*rks 5

AVR指令集中,算术右移和左移一次发生一位。因此,对于这个特定的微控制器,移位>> n意味着编译器实际上执行了n个独立的asr操作,我想>>3它比快一个>>4

顺便说一下,这使AVR非常不常见。