|
есть подпрограмма, в конце которой такое:
-----------------------------------
W = W<<6;
_CLI();
toDAC = W;
_SEI();
-----------------------------------
где W - локальная, toDAC - volatile, используется в прерывании, int
Так компилер мне строит такое:
-----------------------------------
81 W = W<<6;
82 _CLI();
\ 00000078 94F8 CLI
83 toDAC = W;
\ 0000007A E046 LDI R20,6
\ 0000007C ........ CALL ?S_SHL_L02
\ 00000080 .... LDI R30,LOW(toDAC)
\ 00000082 .... LDI R31,(toDAC) >> 8
\ 00000084 8300 ST Z,R16
\ 00000086 8311 STD Z+1,R17
84 _SEI();
\ 00000088 9478 SEI
-----------------------------------
А мне бы хотелось, чтоб он сперва сдвинул, а потом уже прерывания запрещал. Оптимизацию отключать не хочется, потому как на всю процедуру. Неужто нет такого шаманского слова "вот отсюда и до сюда не умничай!"?
E-mail: info@telesys.ru