ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1015047
maleon (30.06.2020 10:35, просмотров: 15257)
В исходнике изменяю один бит в константе, в асме появляются три лишних команды, опции не менялись. Что за фигня? 
//   49   PultFlags &= ~( 1<<3 | 1<<4);/*? | 1<<LOC_CONTR );*/
// 50 PultFlags |= PORTE & ( 1<<3 | 1<<4 ); // PORTE_Bit3, PORTE_Bit4
LDI R30, LOW(KeyFun6E)
LDI R31, (KeyFun6E) >> 8
LDD R16, Z+3
ANDI R16, 0xE7
IN R17, 0x0E
ANDI R17, 0x18
OR R16, R17
STD Z+3, R16

//   49   PultFlags &= ~( 1<<3 | 1<<4 | 1<<LOC_CONTR );
// 50 PultFlags |= PORTE & ( 1<<3 | 1<<4 ); // PORTE_Bit3, PORTE_Bit4
LDI R30, LOW(KeyFun6E)
LDI R31, (KeyFun6E) >> 8
LDD R16, Z+3
ANDI R16, 0xE6
STD Z+3, R16
LDD R16, Z+3
ANDI R16, 0xE7
IN R17, 0x0E
ANDI R17, 0x18
OR R16, R17
STD Z+3, R16

IAR C/C++ Compiler for AVR 5.50.0 (5.50.0.50277)