ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
43237
Xanoy (04.11.2005 13:49, просмотров: 11448)
Привет. Вопрос по ASM вставке в IAR C for AVR При входе в прерывание мне нужно выгрузит данные с регистра в порт, проинкрементировать регистр:
#pragma vector=INT3_vect
__interrupt void INT_3 (void)
 { 
  asm( "IN R10,0x3F" );
  asm( "OUT 0x15,R11" );
  asm("inc R11");
  asm( "OUT 0x3F,R10" );

}
После компиляции посмотрел листин... емае... сыкономил :( компилятор при входе в прерываение сохранил все свои рабочие регистры(хотя я не один из них не использую), выполнил асемблерные вставки, востановил все свои регистры и на выход.
Как сделать так что бы он не сохранял все регистры а только те которые я использую (в данном случае вообще их не трогаю).
Такое у меня было когда я в прерывание вставил ссылку на функцию, ане тело функции. 
Похоже что он не знает какие регистры будут использованы в прерывании и по этому сохраняет их все. Как его заставить так не делать? :)