she (04.11.2005 18:50, просмотров: 1) ответил Xanoy на И ще по путно вопрос
пардон. "слаживание" - это, видимо, операция, результатом которой является полная лажа в регистре? =) такой вот лажовый компилер...
а по первому вопросу - нужно функцию целиком писать на ассемблере, в отдельном модуле, и подлинковывать к проекту. Там будете сохранять только те регистры, какие надо.
Каким образом - достаточно подробно описано в Compiler reference guide.
Выглядеть будет примерно так:
#define __IASM__
#include
extern ssFOut ;здесь будет результат
RSEG CODE
#pragma vector=TIMER1_OVF_vect
public Timer1Overflow
Timer1Overflow:
ST -Y,R31
ST -Y,R30
ST -Y,R20
ST -Y,R19
ST -Y,R18
ST -Y,R17
ST -Y,R16
IN R16,SREG
REQUIRE ?Register_R10_is_global_regvar ;они тоже используются
REQUIRE ?Register_R11_is_global_regvar ;задаются в настройках проекта
REQUIRE ?Register_R12_is_global_regvar
REQUIRE ?Register_R13_is_global_regvar
REQUIRE ?Register_R14_is_global_regvar
REQUIRE ?Register_R15_is_global_regvar
...........................
и т.д.