Si usted quiere guardar/restaurar la llevan a poco, y si no te importa perder el valor cuando la guarda y desbaratando el valor guardado cuando la restaure, sólo tiene que utilizar "rlf saved_carry,f" para guardarlo y "frr saved_carry,f" para restaurarlo. No hay otros registros o flags afectados.
Si la velocidad es de suma importancia y que usted necesita para guardar/establecer algunos otros poco y restaurar más adelante (por ejemplo, RP0), puedes hacer algo como:
Int_Entry:
btfss STATUS,RP0
goto Version_with_RP0_clear
bcf STATUS,RP0
do_interrupt_logic
bsf STATUS,RP0
retfie
Int_with_RP0_Clear:
do_interrupt_logic
bcf STATUS,RP0 ; Si la interrupción de la lógica podría haber dejado conjunto
retfie
Eso es un total de cuatro ciclos, no sólo para salvar/restaurar RP0, sino que también puso a un estado conocido para el ISR (si la rama es tomado, RP0 ya está en el estado correcto así que no hay necesidad de establecer). Si la interrupción de la lógica de no afectar a W u otros indicadores (por ejemplo, si se utiliza bsf/bcf/btfss/btfsc/incfsz/decfsz para casi todo), esta lógica puede guardar cuatro ciclos versus ahorro de W y el estado, limpieza de estado, la ejecución de la interrupción y, a continuación, restaurar el estado y W. estos ahorros no son importantes en un montón de casos, pero puede ser muy importante si uno está tratando, por ejemplo, el uso de un TMR2 interrumpir para hacer algo cada 50 ciclos. Desde TMR2IF está en los bancos de registro, uno tiene que quitar RP0 para restablecer TMR2IF. Si TMR2 se detiene cada 50 ciclos y el ISR tomaría 26 de ciclos con la mejora o 30 ciclos sin que, salvando las tres ciclos en el ISR podría aumentar la línea principal de la disponibilidad de la CPU en un 20%.