7 #define cycle 10000 8 #define TT double 9 //#define TT float 10 \ In segment CODE, align 2, keep-with-next 11 TT test(void) \ test: 12 { \ 00000000 927A ST -Y, R7 \ 00000002 926A ST -Y, R6 \ 00000004 925A ST -Y, R5 \ 00000006 924A ST -Y, R4 \ 00000008 93BA ST -Y, R27 \ 0000000A 93AA ST -Y, R26 \ 0000000C REQUIRE ?Register_R4_is_cg_reg \ 0000000C REQUIRE ?Register_R5_is_cg_reg \ 0000000C REQUIRE ?Register_R6_is_cg_reg \ 0000000C REQUIRE ?Register_R7_is_cg_reg \ 0000000C 9760 SBIW R29:R28, 16 13 TT a = (TT)1.0; \ 0000000E E000 LDI R16, 0 \ 00000010 EF60 LDI R22, 240 \ 00000012 E37F LDI R23, 63 \ 00000014 8308 ST Y, R16 \ 00000016 8309 STD Y+1, R16 \ 00000018 830A STD Y+2, R16 \ 0000001A 830B STD Y+3, R16 \ 0000001C 830C STD Y+4, R16 \ 0000001E 830D STD Y+5, R16 \ 00000020 836E STD Y+6, R22 \ 00000022 837F STD Y+7, R23 14 TT b = (TT)1234.567; \ 00000024 E504 LDI R16, 84 \ 00000026 EE13 LDI R17, 227 \ 00000028 EA25 LDI R18, 165 \ 0000002A E93B LDI R19, 155 \ 0000002C E444 LDI R20, 68 \ 0000002E E45A LDI R21, 74 \ 00000030 E963 LDI R22, 147 \ 00000032 E470 LDI R23, 64 \ 00000034 8708 STD Y+8, R16 \ 00000036 8719 STD Y+9, R17 \ 00000038 872A STD Y+10, R18 \ 0000003A 873B STD Y+11, R19 \ 0000003C 874C STD Y+12, R20 \ 0000003E 875D STD Y+13, R21 \ 00000040 876E STD Y+14, R22 \ 00000042 877F STD Y+15, R23 15 16 for (long i = 0; i < cycle; i++) \ 00000044 2444 CLR R4 \ 00000046 2455 CLR R5 \ 00000048 2466 CLR R6 \ 0000004A 2477 CLR R7 17 { 18 a = a + ( (TT)i / b ); \ ??test_0: \ 0000004C 0182 MOVW R17:R16, R5:R4 \ 0000004E 0193 MOVW R19:R18, R7:R6 \ 00000050 ........ CALL ?SL2D_L11 \ 00000054 01DE MOVW R27:R26, R29:R28 \ 00000056 9618 ADIW R27:R26, 8 \ 00000058 ........ CALL ?D_DIV_L11 \ 0000005C 01DE MOVW R27:R26, R29:R28 \ 0000005E ........ CALL ?D_ADD_L11 \ 00000062 8308 ST Y, R16 \ 00000064 8319 STD Y+1, R17 \ 00000066 832A STD Y+2, R18 \ 00000068 833B STD Y+3, R19 \ 0000006A 834C STD Y+4, R20 \ 0000006C 835D STD Y+5, R21 \ 0000006E 836E STD Y+6, R22 \ 00000070 837F STD Y+7, R23 19 b = b + 0.000001; \ 00000072 8508 LDD R16, Y+8 \ 00000074 8519 LDD R17, Y+9 \ 00000076 852A LDD R18, Y+10 \ 00000078 853B LDD R19, Y+11 \ 0000007A 854C LDD R20, Y+12 \ 0000007C 855D LDD R21, Y+13 \ 0000007E 856E LDD R22, Y+14 \ 00000080 857F LDD R23, Y+15 \ 00000082 .... LDI R26, LOW(__Constant_a0b5ed8d_3eb0c6f7) \ 00000084 .... LDI R27, (__Constant_a0b5ed8d_3eb0c6f7) >> 8 \ 00000086 ........ CALL ?D_ADD_L11 \ 0000008A 8708 STD Y+8, R16 \ 0000008C 8719 STD Y+9, R17 \ 0000008E 872A STD Y+10, R18 \ 00000090 873B STD Y+11, R19 \ 00000092 874C STD Y+12, R20 \ 00000094 875D STD Y+13, R21 \ 00000096 876E STD Y+14, R22 \ 00000098 877F STD Y+15, R23 20 if (a > 100000000.0) a = 1.0; \ 0000009A 8108 LD R16, Y \ 0000009C 8119 LDD R17, Y+1 \ 0000009E 812A LDD R18, Y+2 \ 000000A0 813B LDD R19, Y+3 \ 000000A2 814C LDD R20, Y+4 \ 000000A4 815D LDD R21, Y+5 \ 000000A6 816E LDD R22, Y+6 \ 000000A8 817F LDD R23, Y+7 \ 000000AA .... LDI R26, LOW(__Constant_1_4197d784) \ 000000AC .... LDI R27, (__Constant_1_4197d784) >> 8 \ 000000AE ........ CALL ?D_CMP_GE_L11 \ 000000B2 F458 BRCC ??test_1 \ 000000B4 E000 LDI R16, 0 \ 000000B6 EF60 LDI R22, 240 \ 000000B8 E37F LDI R23, 63 \ 000000BA 8308 ST Y, R16 \ 000000BC 8309 STD Y+1, R16 \ 000000BE 830A STD Y+2, R16 \ 000000C0 830B STD Y+3, R16 \ 000000C2 830C STD Y+4, R16 \ 000000C4 830D STD Y+5, R16 \ 000000C6 836E STD Y+6, R22 \ 000000C8 837F STD Y+7, R23 21 } \ ??test_1: \ 000000CA E001 LDI R16, 1 \ 000000CC 0E40 ADD R4, R16 \ 000000CE E000 LDI R16, 0 \ 000000D0 1E50 ADC R5, R16 \ 000000D2 1E60 ADC R6, R16 \ 000000D4 1E70 ADC R7, R16 \ 000000D6 E100 LDI R16, 16 \ 000000D8 1640 CP R4, R16 \ 000000DA E207 LDI R16, 39 \ 000000DC 0650 CPC R5, R16 \ 000000DE E000 LDI R16, 0 \ 000000E0 0660 CPC R6, R16 \ 000000E2 0670 CPC R7, R16 \ 000000E4 F40C BRGE $+2+2 \ 000000E6 CFB2 RJMP ??test_0 22 return(a); \ 000000E8 8108 LD R16, Y \ 000000EA 8119 LDD R17, Y+1 \ 000000EC 812A LDD R18, Y+2 \ 000000EE 813B LDD R19, Y+3 \ 000000F0 814C LDD R20, Y+4 \ 000000F2 815D LDD R21, Y+5 \ 000000F4 816E LDD R22, Y+6 \ 000000F6 817F LDD R23, Y+7 \ 000000F8 9660 ADIW R29:R28, 16 \ 000000FA 91A9 LD R26, Y+ \ 000000FC 91B9 LD R27, Y+ \ 000000FE 9049 LD R4, Y+ \ 00000100 9059 LD R5, Y+ \ 00000102 9069 LD R6, Y+ \ 00000104 9079 LD R7, Y+ \ 00000106 9508 RET 23 }