sh-elf-gccだと-m2aで-mbitopsオプションをbit操作命令を使ってくれるのですが
char foo;
void
bit0_set(void)
{
foo |=1;
}これだと
0000 D103 mov.l .L2,r1
0002 6010 mov.b @r1,r0
0004 600C extu.b r0,r0
0006 CB01 or #1,r0
0008 2100 mov.b r0,@r1
000a 000B rts
000c 0009 nop
こういうコードになります。
(遅延分岐がおかしいのはgccの4.8だと直っています。)
sh2a以外でもgbrがいつも0なら
0000 D001 mov.l .L2,r0
0002 000B rts
0004 CF01 or.b #1,@(r0,gbr)
こういうことが出来るんじゃないかと
bitmemgbr.patch 非常に危険?
[0回]
PR