ARM Assembler Tips
よく、下位 1bit が 1 である時は〜をするっていう処理を、こうやって書く。
if( (b & 1) != 0 ){ // 処理 }
これは、AND と CMP の2命令に変換される
AND r0,b,#1 CMP r0,#0 ...
比較のために2命令を使うのは、ちょっと勿体ない。
これを短くするには、次のように書く。
if( (b << 31) != 0 ){ // 処理 }
こうすれば、
CMP r0,b,LSL #31 ...
こんな感じで、1命令にしてくれる。