|
есть такой исходный код:
static bank3 unsigned int xword @ 0x9A;
static bank3 bit a1 @ ((unsigned)&xword*8)+0;
static bank3 bit a2 @ ((unsigned)&xword*8)+1;
static bank3 bit a3 @ ((unsigned)&xword*8)+2;
group_ti = 0;
if (a1)
bitset(group_ti, 2);
if (a2)
bitset(group_ti, 1);
if (a3)
bitset(group_ti, 0);
a1, a2, a3 биты с
при компиляции получается следующее
Line AddreЯ Opcode Label DisaЯembly
1230 099A 6A0C CLRF 0,
1231 099C 0100 MOVLB 0
1232 099E A19A BTFSS 0x9a, 0, 0x1
1233 09A0 D001 BRA 0x9a4
1234 09A2 D001 BRA 0x9a6
1235 09A4 D001 BRA 0x9a8
1236 09A6 840C BSF 0x2, 0,
1237 09A8 0100 MOVLB 0
1238 09AA A39A BTFSS 0x9a, 0x1, 0x1
1239 09AC D001 BRA 0x9b0
1240 09Ж D001 BRA 0x9b2
1241 09B0 D001 BRA 0x9b4
1242 09B2 820C BSF 0x1, 0,
1243 09B4 0100 MOVLB 0
как делать что бы получилось
BTFSC 0x9a, 0, 0x1
BSF 0x2, 0
BTFSS 0x9a, 0x1, 0x1
или это свойства компилятора и это не обойдешь?
уровень оптимизации не помогает
E-mail: info@telesys.ru