Цитата(ArtemKAD @ Jun 22 2007, 16:18)

Ну собственно после той темы я и задался этим вопросом. Да и хотелось бы, чтобы сохранялись только используемые в функции регистры, а не все кроме возможных глобальных.
так в том примере вызывается функция strcmp, а если все сделать руками, то сохранит только нужные регистры
Код
6 //Также линкеру запретить w22
7 #pragma diag_suppress=Ta006
\ In segment CODE, align 2, keep-with-next
8 __interrupt void IntLong(void)
\ IntLong:
9 {
\ 00000000 93BA ST -Y, R27
\ 00000002 93AA ST -Y, R26
\ 00000004 93FA ST -Y, R31
\ 00000006 93EA ST -Y, R30
\ 00000008 931A ST -Y, R17
\ 0000000A 930A ST -Y, R16
\ 0000000C B71F IN R17, 0x3F
10 char *a=(char *)0x1234;
\ 0000000E E3E4 LDI R30, 52
\ 00000010 E1F2 LDI R31, 18
11 char *b=(char *)0x3456;
\ 00000012 E5A6 LDI R26, 86
\ 00000014 E3B4 LDI R27, 52
12 while((*a++=*b++));
\ ??IntLong_0:
\ 00000016 910D LD R16, X+
\ 00000018 9301 ST Z+, R16
\ 0000001A 2300 TST R16
\ 0000001C F7E1 BRNE ??IntLong_0
13 }
\ 0000001E BF1F OUT 0x3F, R17
\ 00000020 9109 LD R16, Y+
\ 00000022 9119 LD R17, Y+
\ 00000024 91E9 LD R30, Y+
\ 00000026 91F9 LD R31, Y+
\ 00000028 91A9 LD R26, Y+
\ 0000002A 91B9 LD R27, Y+
\ 0000002C 9518 RETI
14 #pragma diag_default=Ta006
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин