1 .file "RXv3_RegBankSave_ex2.c" 2 .section P,"ax" 3 .Ltext0: 4 .section .text.sort,"ax",@progbits 5 .global _sort 7 _sort: 8 .LVL0: 9 .LFB5: 10 .file 1 "../src/RXv3_RegBankSave_ex2.c" 1:../src/RXv3_RegBankSave_ex2.c **** #include 2:../src/RXv3_RegBankSave_ex2.c **** #include 3:../src/RXv3_RegBankSave_ex2.c **** #include 4:../src/RXv3_RegBankSave_ex2.c **** #include 5:../src/RXv3_RegBankSave_ex2.c **** 6:../src/RXv3_RegBankSave_ex2.c **** /* Special character code */ 7:../src/RXv3_RegBankSave_ex2.c **** #define LF 0x0a /* Line feed */ 8:../src/RXv3_RegBankSave_ex2.c **** 9:../src/RXv3_RegBankSave_ex2.c **** /* Flag */ 10:../src/RXv3_RegBankSave_ex2.c **** #define FALSE 0x00 11:../src/RXv3_RegBankSave_ex2.c **** #define TRUE 0x01 12:../src/RXv3_RegBankSave_ex2.c **** 13:../src/RXv3_RegBankSave_ex2.c **** //void main(void); 14:../src/RXv3_RegBankSave_ex2.c **** void sort(long *a); 15:../src/RXv3_RegBankSave_ex2.c **** void change(long *a); 16:../src/RXv3_RegBankSave_ex2.c **** 17:../src/RXv3_RegBankSave_ex2.c **** //void main(void) 18:../src/RXv3_RegBankSave_ex2.c **** static void task_(void) 19:../src/RXv3_RegBankSave_ex2.c **** { 20:../src/RXv3_RegBankSave_ex2.c **** long data[10]; 21:../src/RXv3_RegBankSave_ex2.c **** int i; 22:../src/RXv3_RegBankSave_ex2.c **** char tmp[2]; 23:../src/RXv3_RegBankSave_ex2.c **** int ret; 24:../src/RXv3_RegBankSave_ex2.c **** char isnuminput; 25:../src/RXv3_RegBankSave_ex2.c **** 26:../src/RXv3_RegBankSave_ex2.c **** // while(1){ 27:../src/RXv3_RegBankSave_ex2.c **** 28:../src/RXv3_RegBankSave_ex2.c **** printf("### Data Input ###\n"); 29:../src/RXv3_RegBankSave_ex2.c **** 30:../src/RXv3_RegBankSave_ex2.c **** for( i=0; i<10; i++ ){ 31:../src/RXv3_RegBankSave_ex2.c **** printf("data[%d]=",i); 32:../src/RXv3_RegBankSave_ex2.c **** data[i]= 0; 33:../src/RXv3_RegBankSave_ex2.c **** isnuminput = FALSE; 34:../src/RXv3_RegBankSave_ex2.c **** while(1){ 35:../src/RXv3_RegBankSave_ex2.c **** ret = scanf("%c",&tmp); 36:../src/RXv3_RegBankSave_ex2.c **** if(ret != EOF){ 37:../src/RXv3_RegBankSave_ex2.c **** if( tmp[0] != LF ){ 38:../src/RXv3_RegBankSave_ex2.c **** if( isdigit(tmp[0])!=0 ){ 39:../src/RXv3_RegBankSave_ex2.c **** data[i] = data[i]*10 + atoi(tmp); 40:../src/RXv3_RegBankSave_ex2.c **** isnuminput = TRUE; 41:../src/RXv3_RegBankSave_ex2.c **** }else{ 42:../src/RXv3_RegBankSave_ex2.c **** printf("\n+++You can input only the decimal number.+++\n"); 43:../src/RXv3_RegBankSave_ex2.c **** data[i] = 0; 44:../src/RXv3_RegBankSave_ex2.c **** isnuminput = FALSE; 45:../src/RXv3_RegBankSave_ex2.c **** printf("data[%d]=",i); 46:../src/RXv3_RegBankSave_ex2.c **** } 47:../src/RXv3_RegBankSave_ex2.c **** }else{ 48:../src/RXv3_RegBankSave_ex2.c **** if(isnuminput != FALSE){ 49:../src/RXv3_RegBankSave_ex2.c **** break; 50:../src/RXv3_RegBankSave_ex2.c **** }else{ 51:../src/RXv3_RegBankSave_ex2.c **** printf("\n+++You can input only the decimal number.+++\n"); 52:../src/RXv3_RegBankSave_ex2.c **** data[i] = 0; 53:../src/RXv3_RegBankSave_ex2.c **** isnuminput = FALSE; 54:../src/RXv3_RegBankSave_ex2.c **** printf("data[%d]=",i); 55:../src/RXv3_RegBankSave_ex2.c **** } 56:../src/RXv3_RegBankSave_ex2.c **** } 57:../src/RXv3_RegBankSave_ex2.c **** }else{ 58:../src/RXv3_RegBankSave_ex2.c **** printf("\n+++You can input only the decimal number.+++\n"); 59:../src/RXv3_RegBankSave_ex2.c **** data[i] = 0; 60:../src/RXv3_RegBankSave_ex2.c **** isnuminput = FALSE; 61:../src/RXv3_RegBankSave_ex2.c **** printf("data[%d]=",i); 62:../src/RXv3_RegBankSave_ex2.c **** } 63:../src/RXv3_RegBankSave_ex2.c **** } 64:../src/RXv3_RegBankSave_ex2.c **** } 65:../src/RXv3_RegBankSave_ex2.c **** 66:../src/RXv3_RegBankSave_ex2.c **** sort(data); 67:../src/RXv3_RegBankSave_ex2.c **** 68:../src/RXv3_RegBankSave_ex2.c **** printf("*** Sorting results ***\n"); 69:../src/RXv3_RegBankSave_ex2.c **** 70:../src/RXv3_RegBankSave_ex2.c **** for( i=0; i<10; i++ ){ 71:../src/RXv3_RegBankSave_ex2.c **** printf("data[%d]=%ld\n",i,data[i]); 72:../src/RXv3_RegBankSave_ex2.c **** } 73:../src/RXv3_RegBankSave_ex2.c **** 74:../src/RXv3_RegBankSave_ex2.c **** change(data); 75:../src/RXv3_RegBankSave_ex2.c **** 76:../src/RXv3_RegBankSave_ex2.c **** // } 77:../src/RXv3_RegBankSave_ex2.c **** } 78:../src/RXv3_RegBankSave_ex2.c **** 79:../src/RXv3_RegBankSave_ex2.c **** void sort(long *data) 80:../src/RXv3_RegBankSave_ex2.c **** { 11 .loc 1 80 1 view -0 12 .loc 1 80 1 is_stmt 0 view .LVU1 13 0000 6E 6D pushm r6-r13 14 .LCFI0: 15 0002 60 80 sub #8, r0 16 .LCFI1: 81:../src/RXv3_RegBankSave_ex2.c **** long t; 17 .loc 1 81 5 is_stmt 1 view .LVU2 82:../src/RXv3_RegBankSave_ex2.c **** int i, j, k, gap; 18 .loc 1 82 5 view .LVU3 83:../src/RXv3_RegBankSave_ex2.c **** 84:../src/RXv3_RegBankSave_ex2.c **** gap = 5; 19 .loc 1 84 5 view .LVU4 20 .LVL1: 85:../src/RXv3_RegBankSave_ex2.c **** while( gap > 0 ){ 21 .loc 1 85 5 view .LVU5 80:../src/RXv3_RegBankSave_ex2.c **** long t; 22 .loc 1 80 1 is_stmt 0 view .LVU6 23 0004 A0 09 mov.L r1, 4[r0] 86:../src/RXv3_RegBankSave_ex2.c **** for( k=0; k=k; j=j-gap){ 89:../src/RXv3_RegBankSave_ex2.c **** if(data[j]>data[j+gap]){ 24 .loc 1 89 23 view .LVU7 25 0006 F8 06 03 mov.L #3, [r0] 84:../src/RXv3_RegBankSave_ex2.c **** while( gap > 0 ){ 26 .loc 1 84 9 view .LVU8 27 0009 66 5A mov.L #5, r10 28 .LVL2: 29 .balign 8,3,1 30 .L2: 84:../src/RXv3_RegBankSave_ex2.c **** while( gap > 0 ){ 31 .loc 1 84 9 view .LVU9 32 000b ED 0F 01 mov.L 4[r0], r15 33 000e FD C2 AE shll #2, r10, r14 34 0011 FB 66 FC mov.L #-4, r6 35 0014 4F A6 mul r10, r6 86:../src/RXv3_RegBankSave_ex2.c **** for( k=0; k=k; j=j-gap){ 41 .loc 1 87 13 is_stmt 1 view .LVU11 87:../src/RXv3_RegBankSave_ex2.c **** for(j=i-gap; j>=k; j=j-gap){ 42 .loc 1 87 13 is_stmt 0 view .LVU12 43 0018 EF C9 mov.L r12, r9 44 001a FF 2D FE add r15, r14, r13 86:../src/RXv3_RegBankSave_ex2.c **** for( k=0; kdata[j+gap]){ 50 .loc 1 88 17 is_stmt 1 view .LVU14 88:../src/RXv3_RegBankSave_ex2.c **** if(data[j]>data[j+gap]){ 51 .loc 1 88 22 is_stmt 0 view .LVU15 52 0020 EF 97 mov.L r9, r7 53 .LVL5: 88:../src/RXv3_RegBankSave_ex2.c **** if(data[j]>data[j+gap]){ 54 .loc 1 88 17 view .LVU16 55 0022 47 C9 cmp r12, r9 56 0024 29 2D blt .L7 57 .loc 1 89 21 is_stmt 1 view .LVU17 58 .loc 1 89 28 is_stmt 0 view .LVU18 59 0026 EC 85 mov.L [r8], r5 60 .loc 1 89 36 view .LVU19 61 0028 EC D4 mov.L [r13], r4 62 .loc 1 89 23 view .LVU20 63 002a 47 54 cmp r5, r4 64 002c 28 25 bge .L7 65 002e EF D1 mov.L r13, r1 66 0030 EF 82 mov.L r8, r2 67 0032 EF 83 mov.L r8, r3 68 0034 2E 10 bra .L6 69 .LVL6: 70 .L8: 71 .loc 1 89 36 view .LVU21 72 0036 EC 34 mov.L [r3], r4 73 .loc 1 89 28 view .LVU22 74 0038 EC B5 mov.L [r11], r5 75 .LVL7: 76 .loc 1 89 28 view .LVU23 77 003a EF B3 mov.L r11, r3 78 003c 4B 62 add r6, r2 79 003e 4B 61 add r6, r1 80 .LVL8: 81 .loc 1 89 23 view .LVU24 82 0040 47 45 cmp r4, r5 83 0042 2B 0F ble .L7 84 .balign 8,3,2 85 .L6: 86 .loc 1 89 21 is_stmt 1 discriminator 2 view .LVU25 90:../src/RXv3_RegBankSave_ex2.c **** t = data[j]; 87 .loc 1 90 25 discriminator 2 view .LVU26 88 .LVL9: 91:../src/RXv3_RegBankSave_ex2.c **** data[j] = data[j+gap]; 89 .loc 1 91 25 discriminator 2 view .LVU27 89:../src/RXv3_RegBankSave_ex2.c **** t = data[j]; 90 .loc 1 89 28 is_stmt 0 discriminator 2 view .LVU28 91 0044 FF 2B 63 add r6, r3, r11 92 .loc 1 91 33 discriminator 2 view .LVU29 93 0047 E3 24 mov.L r4, [r2] 92:../src/RXv3_RegBankSave_ex2.c **** data[j+gap] = t; 94 .loc 1 92 25 is_stmt 1 discriminator 2 view .LVU30 95 .loc 1 92 37 is_stmt 0 discriminator 2 view .LVU31 96 0049 E3 15 mov.L r5, [r1] 88:../src/RXv3_RegBankSave_ex2.c **** if(data[j]>data[j+gap]){ 97 .loc 1 88 37 discriminator 2 view .LVU32 98 004b 43 A7 sub r10, r7 99 .LVL10: 88:../src/RXv3_RegBankSave_ex2.c **** if(data[j]>data[j+gap]){ 100 .loc 1 88 17 discriminator 2 view .LVU33 101 004d 47 C7 cmp r12, r7 102 004f 28 E7 bge .L8 103 .LVL11: 104 .balign 8,3,1 105 .L7: 88:../src/RXv3_RegBankSave_ex2.c **** if(data[j]>data[j+gap]){ 106 .loc 1 88 17 discriminator 2 view .LVU34 107 0051 4B A9 add r10, r9 108 .LVL12: 88:../src/RXv3_RegBankSave_ex2.c **** if(data[j]>data[j+gap]){ 109 .loc 1 88 17 discriminator 2 view .LVU35 110 0053 4B E8 add r14, r8 87:../src/RXv3_RegBankSave_ex2.c **** for(j=i-gap; j>=k; j=j-gap){ 111 .loc 1 87 13 view .LVU36 112 0055 FF 27 A9 add r10, r9, r7 113 .LVL13: 87:../src/RXv3_RegBankSave_ex2.c **** for(j=i-gap; j>=k; j=j-gap){ 114 .loc 1 87 13 view .LVU37 115 0058 4B ED add r14, r13 116 005a 61 97 cmp #9, r7 117 005c 2B C4 ble .L4 86:../src/RXv3_RegBankSave_ex2.c **** for( i=k+gap; i<10; i=i+gap ){ 118 .loc 1 86 27 discriminator 2 view .LVU38 119 005e 62 1C add #1, r12 120 .LVL14: 86:../src/RXv3_RegBankSave_ex2.c **** for( i=k+gap; i<10; i=i+gap ){ 121 .loc 1 86 27 discriminator 2 view .LVU39 122 0060 62 4F add #4, r15 86:../src/RXv3_RegBankSave_ex2.c **** for( i=k+gap; i<10; i=i+gap ){ 123 .loc 1 86 9 discriminator 2 view .LVU40 124 0062 47 AC cmp r10, r12 125 0064 29 B4 blt .L9 93:../src/RXv3_RegBankSave_ex2.c **** } 94:../src/RXv3_RegBankSave_ex2.c **** else 95:../src/RXv3_RegBankSave_ex2.c **** break; 96:../src/RXv3_RegBankSave_ex2.c **** } 97:../src/RXv3_RegBankSave_ex2.c **** } 98:../src/RXv3_RegBankSave_ex2.c **** } 99:../src/RXv3_RegBankSave_ex2.c **** gap = gap/2; 126 .loc 1 99 9 is_stmt 1 view .LVU41 127 0066 EC 07 mov.L [r0], r7 128 0068 60 17 sub #1, r7 129 006a E3 07 mov.L r7, [r0] 130 .loc 1 99 13 is_stmt 0 view .LVU42 131 006c 6A 1A shar #1, r10 132 .LVL15: 85:../src/RXv3_RegBankSave_ex2.c **** for( k=0; k"