############################################################################## # # # IAR ARM ANSI C/C++ Compiler V4.42A/W32 EVALUATION 12/May/2008 14:02:26 # # Copyright 1999-2005 IAR Systems. All rights reserved. # # # # Cpu mode = interwork # # Endian = little # # Stack alignment = 4 # # Source file = D:\Pasha\elf\_MY_PROJECT_\naticq_mod\strings.c # # Command line = D:\Pasha\elf\_MY_PROJECT_\naticq_mod\strings.c # # --preprocess D:\Pasha\elf\_MY_PROJECT_\naticq_mod\Re # # lease_SGOLD\List\ -lC D:\Pasha\elf\_MY_PROJECT_\nati # # cq_mod\Release_SGOLD\List\ -o # # D:\Pasha\elf\_MY_PROJECT_\naticq_mod\Release_SGOLD\O # # bj\ -s9 --no_unroll --cpu_mode arm --endian little # # --cpu ARM926EJ-S --stack_align 4 --interwork -e # # --fpu None --dlib_config "D:\Pasha\Embedded # # Workbench 4.0 Evaluation2\ARM\LIB\dl5tpainl8n.h" -I # # "D:\Pasha\Embedded Workbench 4.0 # # Evaluation2\ARM\INC\" --inline_threshold=2 # # List file = D:\Pasha\elf\_MY_PROJECT_\naticq_mod\Release_SGOLD\L # # ist\strings.lst # # Object file = D:\Pasha\elf\_MY_PROJECT_\naticq_mod\Release_SGOLD\O # # bj\strings.r79 # # # # # ############################################################################## D:\Pasha\elf\_MY_PROJECT_\naticq_mod\strings.c 1 #include "../inc/swilib.h" 2 #include "strings.h" 3 \ In segment CODE, align 4, keep-with-next 4 char *MakeGlobalString(const char *first, int breakchar, const char *last) 5 { \ MakeGlobalString: \ 00000000 F0412DE9 PUSH {R4-R8,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0150A0E1 MOV R5,R1 \ 0000000C 0260A0E1 MOV R6,R2 6 int l; 7 char *p; 8 p=malloc((l=strlen(first))+strlen(last)+2); \ 00000010 1B0000EF SWI +27 \ 00000014 0070A0E1 MOV R7,R0 \ 00000018 0600A0E1 MOV R0,R6 \ 0000001C 1B0000EF SWI +27 \ 00000020 070080E0 ADD R0,R0,R7 \ 00000024 020080E2 ADD R0,R0,#+2 \ 00000028 140000EF SWI +20 \ 0000002C 0080A0E1 MOV R8,R0 9 strcpy(p,first); \ 00000030 0410A0E1 MOV R1,R4 \ 00000034 1A0000EF SWI +26 10 if (breakchar) \ 00000038 000055E3 CMP R5,#+0 11 p[l++]=breakchar; \ 0000003C 0850C717 STRBNE R5,[R7, +R8] \ 00000040 01708712 ADDNE R7,R7,#+1 12 strcpy(p+l,last); \ 00000044 0610A0E1 MOV R1,R6 \ 00000048 080087E0 ADD R0,R7,R8 \ 0000004C 1A0000EF SWI +26 13 return p; \ 00000050 0800A0E1 MOV R0,R8 \ 00000054 F081BDE8 POP {R4-R8,PC} ;; return 14 } 15 \ In segment CODE, align 4, keep-with-next 16 int strcmp_nocase(const char *s, const char *d) 17 { 18 int cs; 19 int ds; 20 do 21 { 22 cs=*s++; \ strcmp_nocase: \ ??strcmp_nocase_0: \ 00000000 ........ LDRB R2,[R0], #+1 23 if (cs&0x40) cs&=0xDF; 24 ds=*d++; \ 00000004 ........ LDRB R3,[R1], #+1 \ 00000008 400012E3 TST R2,#0x40 \ 0000000C DF200212 ANDNE R2,R2,#0xDF 25 if (ds&0x40) ds&=0xDF; \ 00000010 400013E3 TST R3,#0x40 \ 00000014 DF300312 ANDNE R3,R3,#0xDF 26 cs-=ds; \ 00000018 032052E0 SUBS R2,R2,R3 27 if (cs) break; \ 0000001C 0100001A BNE ??strcmp_nocase_1 28 } 29 while(ds); \ 00000020 000053E3 CMP R3,#+0 \ 00000024 F5FFFF1A BNE ??strcmp_nocase_0 30 return(cs); \ ??strcmp_nocase_1: \ 00000028 0200A0E1 MOV R0,R2 \ 0000002C 1EFF2FE1 BX LR ;; return 31 } 32 33 typedef struct 34 { 35 unsigned short u; 36 char dos; 37 char win; 38 char koi8; 39 } TUNICODE2CHAR; 40 \ In segment DATA_C, align 4, align-sorted 41 const TUNICODE2CHAR unicode2char[]= \ unicode2char: \ 00000000 1004 DC16 1040 \ 00000002 80C0E100 DC8 128, 192, 225, 0 \ 00000006 1104 DC16 1041 \ 00000008 81C1E200 DC8 129, 193, 226, 0 \ 0000000C 1204 DC16 1042 \ 0000000E 82C2F700 DC8 130, 194, 247, 0 \ 00000012 1304 DC16 1043 \ 00000014 83C3E700 DC8 131, 195, 231, 0 \ 00000018 1404 DC16 1044 \ 0000001A 84C4E400 DC8 132, 196, 228, 0 \ 0000001E 1504 DC16 1045 \ 00000020 85C5E500 DC8 133, 197, 229, 0 \ 00000024 1604 DC16 1046 \ 00000026 86C6F600 DC8 134, 198, 246, 0 \ 0000002A 1704 DC16 1047 \ 0000002C 87C7FA00 DC8 135, 199, 250, 0 \ 00000030 1804 DC16 1048 \ 00000032 88C8E900 DC8 136, 200, 233, 0 \ 00000036 1904 DC16 1049 \ 00000038 89C9EA00 DC8 137, 201, 234, 0 \ 0000003C 1A04 DC16 1050 \ 0000003E 8ACAEB00 DC8 138, 202, 235, 0 \ 00000042 1B04 DC16 1051 \ 00000044 8BCBEC00 DC8 139, 203, 236, 0 \ 00000048 1C04 DC16 1052 \ 0000004A 8CCCED00 DC8 140, 204, 237, 0 \ 0000004E 1D04 DC16 1053 \ 00000050 8DCDEE00 DC8 141, 205, 238, 0 \ 00000054 1E04 DC16 1054 \ 00000056 8ECEEF00 DC8 142, 206, 239, 0 \ 0000005A 1F04 DC16 1055 \ 0000005C 8FCFF000 DC8 143, 207, 240, 0 \ 00000060 2004 DC16 1056 \ 00000062 90D0F200 DC8 144, 208, 242, 0 \ 00000066 2104 DC16 1057 \ 00000068 91D1F300 DC8 145, 209, 243, 0 \ 0000006C 2204 DC16 1058 \ 0000006E 92D2F400 DC8 146, 210, 244, 0 \ 00000072 2304 DC16 1059 \ 00000074 93D3F500 DC8 147, 211, 245, 0 \ 00000078 2404 DC16 1060 \ 0000007A 94D4E600 DC8 148, 212, 230, 0 \ 0000007E 2504 DC16 1061 \ 00000080 95D5E800 DC8 149, 213, 232, 0 \ 00000084 2604 DC16 1062 \ 00000086 96D6E300 DC8 150, 214, 227, 0 \ 0000008A 2704 DC16 1063 \ 0000008C 97D7FE00 DC8 151, 215, 254, 0 \ 00000090 2804 DC16 1064 \ 00000092 98D8FB00 DC8 152, 216, 251, 0 \ 00000096 2904 DC16 1065 \ 00000098 99D9FD00 DC8 153, 217, 253, 0 \ 0000009C 2A04 DC16 1066 \ 0000009E 9ADAFF00 DC8 154, 218, 255, 0 \ 000000A2 2B04 DC16 1067 \ 000000A4 9BDBF900 DC8 155, 219, 249, 0 \ 000000A8 2C04 DC16 1068 \ 000000AA 9CDCF800 DC8 156, 220, 248, 0 \ 000000AE 2D04 DC16 1069 \ 000000B0 9DDDFC00 DC8 157, 221, 252, 0 \ 000000B4 2E04 DC16 1070 \ 000000B6 9EDEE000 DC8 158, 222, 224, 0 \ 000000BA 2F04 DC16 1071 \ 000000BC 9FDFF100 DC8 159, 223, 241, 0 \ 000000C0 0204 DC16 1026 \ 000000C2 5F805F00 DC8 95, 128, 95, 0 \ 000000C6 0304 DC16 1027 \ 000000C8 5F815F00 DC8 95, 129, 95, 0 \ 000000CC 0904 DC16 1033 \ 000000CE 5F8A5F00 DC8 95, 138, 95, 0 \ 000000D2 0A04 DC16 1034 \ 000000D4 5F8C5F00 DC8 95, 140, 95, 0 \ 000000D8 0C04 DC16 1036 \ 000000DA 5F8D5F00 DC8 95, 141, 95, 0 \ 000000DE 0B04 DC16 1035 \ 000000E0 5F8E5F00 DC8 95, 142, 95, 0 \ 000000E4 0F04 DC16 1039 \ 000000E6 5F8F5F00 DC8 95, 143, 95, 0 \ 000000EA 0E04 DC16 1038 \ 000000EC F6A15F00 DC8 246, 161, 95, 0 \ 000000F0 0804 DC16 1032 \ 000000F2 4AA34A00 DC8 74, 163, 74, 0 \ 000000F6 0904 DC16 1033 \ 000000F8 83A5BD00 DC8 131, 165, 189, 0 \ 000000FC 0104 DC16 1025 \ 000000FE F0A8B300 DC8 240, 168, 179, 0 \ 00000102 0404 DC16 1028 \ 00000104 F2AAB400 DC8 242, 170, 180, 0 \ 00000108 0704 DC16 1031 \ 0000010A F4AFB700 DC8 244, 175, 183, 0 \ 0000010E 0604 DC16 1030 \ 00000110 49B2B600 DC8 73, 178, 182, 0 \ 00000114 0504 DC16 1029 \ 00000116 53BD5300 DC8 83, 189, 83, 0 \ 0000011A 3004 DC16 1072 \ 0000011C A0E0C100 DC8 160, 224, 193, 0 \ 00000120 3104 DC16 1073 \ 00000122 A1E1C200 DC8 161, 225, 194, 0 \ 00000126 3204 DC16 1074 \ 00000128 A2E2D700 DC8 162, 226, 215, 0 \ 0000012C 3304 DC16 1075 \ 0000012E A3E3C700 DC8 163, 227, 199, 0 \ 00000132 3404 DC16 1076 \ 00000134 A4E4C400 DC8 164, 228, 196, 0 \ 00000138 3504 DC16 1077 \ 0000013A A5E5C500 DC8 165, 229, 197, 0 \ 0000013E 3604 DC16 1078 \ 00000140 A6E6D600 DC8 166, 230, 214, 0 \ 00000144 3704 DC16 1079 \ 00000146 A7E7DA00 DC8 167, 231, 218, 0 \ 0000014A 3804 DC16 1080 \ 0000014C A8E8C900 DC8 168, 232, 201, 0 \ 00000150 3904 DC16 1081 \ 00000152 A9E9CA00 DC8 169, 233, 202, 0 \ 00000156 3A04 DC16 1082 \ 00000158 AAEACB00 DC8 170, 234, 203, 0 \ 0000015C 3B04 DC16 1083 \ 0000015E ABEBCC00 DC8 171, 235, 204, 0 \ 00000162 3C04 DC16 1084 \ 00000164 ACECCD00 DC8 172, 236, 205, 0 \ 00000168 3D04 DC16 1085 \ 0000016A ADEDCE00 DC8 173, 237, 206, 0 \ 0000016E 3E04 DC16 1086 \ 00000170 AEEECF00 DC8 174, 238, 207, 0 \ 00000174 3F04 DC16 1087 \ 00000176 AFEFD000 DC8 175, 239, 208, 0 \ 0000017A 4004 DC16 1088 \ 0000017C E0F0D200 DC8 224, 240, 210, 0 \ 00000180 4104 DC16 1089 \ 00000182 E1F1D300 DC8 225, 241, 211, 0 \ 00000186 4204 DC16 1090 \ 00000188 E2F2D400 DC8 226, 242, 212, 0 \ 0000018C 4304 DC16 1091 \ 0000018E E3F3D500 DC8 227, 243, 213, 0 \ 00000192 4404 DC16 1092 \ 00000194 E4F4C600 DC8 228, 244, 198, 0 \ 00000198 4504 DC16 1093 \ 0000019A E5F5C800 DC8 229, 245, 200, 0 \ 0000019E 4604 DC16 1094 \ 000001A0 E6F6C300 DC8 230, 246, 195, 0 \ 000001A4 4704 DC16 1095 \ 000001A6 E7F7DE00 DC8 231, 247, 222, 0 \ 000001AA 4804 DC16 1096 \ 000001AC E8F8DB00 DC8 232, 248, 219, 0 \ 000001B0 4904 DC16 1097 \ 000001B2 E9F9DD00 DC8 233, 249, 221, 0 \ 000001B6 4A04 DC16 1098 \ 000001B8 EAFADF00 DC8 234, 250, 223, 0 \ 000001BC 4B04 DC16 1099 \ 000001BE EBFBD900 DC8 235, 251, 217, 0 \ 000001C2 4C04 DC16 1100 \ 000001C4 ECFCD800 DC8 236, 252, 216, 0 \ 000001C8 4D04 DC16 1101 \ 000001CA EDFDDC00 DC8 237, 253, 220, 0 \ 000001CE 4E04 DC16 1102 \ 000001D0 EEFEC000 DC8 238, 254, 192, 0 \ 000001D4 4F04 DC16 1103 \ 000001D6 EFFFD100 DC8 239, 255, 209, 0 \ 000001DA 5204 DC16 1106 \ 000001DC 5F905F00 DC8 95, 144, 95, 0 \ 000001E0 5304 DC16 1107 \ 000001E2 5F835F00 DC8 95, 131, 95, 0 \ 000001E6 5904 DC16 1113 \ 000001E8 5F9A5F00 DC8 95, 154, 95, 0 \ 000001EC 5A04 DC16 1114 \ 000001EE 5F9C5F00 DC8 95, 156, 95, 0 \ 000001F2 5C04 DC16 1116 \ 000001F4 5F9D5F00 DC8 95, 157, 95, 0 \ 000001F8 5B04 DC16 1115 \ 000001FA 5F9E5F00 DC8 95, 158, 95, 0 \ 000001FE 5F04 DC16 1119 \ 00000200 5F9F5F00 DC8 95, 159, 95, 0 \ 00000204 5E04 DC16 1118 \ 00000206 F7A25F00 DC8 247, 162, 95, 0 \ 0000020A 5804 DC16 1112 \ 0000020C 6ABC6A00 DC8 106, 188, 106, 0 \ 00000210 9104 DC16 1169 \ 00000212 A3B4AD00 DC8 163, 180, 173, 0 \ 00000216 5104 DC16 1105 \ 00000218 F1B8A300 DC8 241, 184, 163, 0 \ 0000021C 5404 DC16 1108 \ 0000021E F3BAA400 DC8 243, 186, 164, 0 \ 00000222 5704 DC16 1111 \ 00000224 F5BFA700 DC8 245, 191, 167, 0 \ 00000228 5604 DC16 1110 \ 0000022A 69B3A600 DC8 105, 179, 166, 0 \ 0000022E 5504 DC16 1109 \ 00000230 73BE7300 DC8 115, 190, 115, 0 \ 00000234 A000 DC16 160 \ 00000236 5FA02000 DC8 95, 160, 32, 0 \ 0000023A A400 DC16 164 \ 0000023C 5FA4FD00 DC8 95, 164, 253, 0 \ 00000240 A600 DC16 166 \ 00000242 5FA65F00 DC8 95, 166, 95, 0 \ 00000246 B000 DC16 176 \ 00000248 F8B09C00 DC8 248, 176, 156, 0 \ 0000024C B700 DC16 183 \ 0000024E FAB79E00 DC8 250, 183, 158, 0 \ 00000252 0000 DC16 0 \ 00000254 00000000 DC8 0, 0, 0, 0 42 { 43 // CAPITAL Cyrillic letters (base) 44 0x410,0x80,0xC0,0xE1, // À 45 0x411,0x81,0xC1,0xE2, // Á 46 0x412,0x82,0xC2,0xF7, // Â 47 0x413,0x83,0xC3,0xE7, // Ã 48 0x414,0x84,0xC4,0xE4, // Ä 49 0x415,0x85,0xC5,0xE5, // Å 50 0x416,0x86,0xC6,0xF6, // Æ 51 0x417,0x87,0xC7,0xFA, // Ç 52 0x418,0x88,0xC8,0xE9, // È 53 0x419,0x89,0xC9,0xEA, // É 54 0x41A,0x8A,0xCA,0xEB, // Ê 55 0x41B,0x8B,0xCB,0xEC, // Ë 56 0x41C,0x8C,0xCC,0xED, // Ì 57 0x41D,0x8D,0xCD,0xEE, // Í 58 0x41E,0x8E,0xCE,0xEF, // Î 59 0x41F,0x8F,0xCF,0xF0, // Ï 60 0x420,0x90,0xD0,0xF2, // Ð 61 0x421,0x91,0xD1,0xF3, // Ñ 62 0x422,0x92,0xD2,0xF4, // Ò 63 0x423,0x93,0xD3,0xF5, // Ó 64 0x424,0x94,0xD4,0xE6, // Ô 65 0x425,0x95,0xD5,0xE8, // Õ 66 0x426,0x96,0xD6,0xE3, // Ö 67 0x427,0x97,0xD7,0xFE, // × 68 0x428,0x98,0xD8,0xFB, // Ø 69 0x429,0x99,0xD9,0xFD, // Ù 70 0x42A,0x9A,0xDA,0xFF, // Ú 71 0x42B,0x9B,0xDB,0xF9, // Û 72 0x42C,0x9C,0xDC,0xF8, // Ü 73 0x42D,0x9D,0xDD,0xFC, // Ý 74 0x42E,0x9E,0xDE,0xE0, // Þ 75 0x42F,0x9F,0xDF,0xF1, // ß 76 // CAPITAL Cyrillic letters (additional) 77 0x402,'_',0x80,'_', // _ .*.* 78 0x403,'_',0x81,'_', // _ .*.* 79 0x409,'_',0x8A,'_', // _ .*.* 80 0x40A,'_',0x8C,'_', // _ .*.* 81 0x40C,'_',0x8D,'_', // _ .*.* 82 0x40B,'_',0x8E,'_', // _ .*.* 83 0x40F,'_',0x8F,'_', // _ .*.* 84 0x40E,0xF6,0xA1,'_', // ¡ ...* 85 0x408,0x4A,0xA3,0x4A, // _ .*.* 86 0x409,0x83,0xA5,0xBD, // _ .*.. 87 0x401,0xF0,0xA8,0xB3, // ¨ 88 0x404,0xF2,0xAA,0xB4, // ª 89 0x407,0xF4,0xAF,0xB7, // ¯ 90 0x406,0x49,0xB2,0xB6, // _ .*.. 91 0x405,0x53,0xBD,0x53, // _ .*.* 92 // SMALL Cyrillic letters (base) 93 0x430,0xA0,0xE0,0xC1, // à 94 0x431,0xA1,0xE1,0xC2, // á 95 0x432,0xA2,0xE2,0xD7, // â 96 0x433,0xA3,0xE3,0xC7, // ã 97 0x434,0xA4,0xE4,0xC4, // ä 98 0x435,0xA5,0xE5,0xC5, // å 99 0x436,0xA6,0xE6,0xD6, // æ 100 0x437,0xA7,0xE7,0xDA, // ç 101 0x438,0xA8,0xE8,0xC9, // è 102 0x439,0xA9,0xE9,0xCA, // é 103 0x43A,0xAA,0xEA,0xCB, // ê 104 0x43B,0xAB,0xEB,0xCC, // ë 105 0x43C,0xAC,0xEC,0xCD, // ì 106 0x43D,0xAD,0xED,0xCE, // í 107 0x43E,0xAE,0xEE,0xCF, // î 108 0x43F,0xAF,0xEF,0xD0, // ï 109 0x440,0xE0,0xF0,0xD2, // ð 110 0x441,0xE1,0xF1,0xD3, // ñ 111 0x442,0xE2,0xF2,0xD4, // ò 112 0x443,0xE3,0xF3,0xD5, // ó 113 0x444,0xE4,0xF4,0xC6, // ô 114 0x445,0xE5,0xF5,0xC8, // õ 115 0x446,0xE6,0xF6,0xC3, // ö 116 0x447,0xE7,0xF7,0xDE, // ÷ 117 0x448,0xE8,0xF8,0xDB, // ø 118 0x449,0xE9,0xF9,0xDD, // ù 119 0x44A,0xEA,0xFA,0xDF, // ú 120 0x44B,0xEB,0xFB,0xD9, // û 121 0x44C,0xEC,0xFC,0xD8, // ü 122 0x44D,0xED,0xFD,0xDC, // ý 123 0x44E,0xEE,0xFE,0xC0, // þ 124 0x44F,0xEF,0xFF,0xD1, // ÿ 125 // SMALL Cyrillic letters (additional) 126 0x452,'_',0x90,'_', // _ .*.* 127 0x453,'_',0x83,'_', // _ .*.* 128 0x459,'_',0x9A,'_', // _ .*.* 129 0x45A,'_',0x9C,'_', // _ .*.* 130 0x45C,'_',0x9D,'_', // _ .*.* 131 0x45B,'_',0x9E,'_', // _ .*.* 132 0x45F,'_',0x9F,'_', // _ .*.* 133 0x45E,0xF7,0xA2,'_', // ¢ ...* 134 0x458,0x6A,0xBC,0x6A, // _ .*.* 135 0x491,0xA3,0xB4,0xAD, // _ .*.. 136 0x451,0xF1,0xB8,0xA3, // ¸ 137 0x454,0xF3,0xBA,0xA4, // º 138 0x457,0xF5,0xBF,0xA7, // ¿ 139 0x456,0x69,0xB3,0xA6, // _ .*.. 140 0x455,0x73,0xBE,0x73, // _ .*.* 141 0x0A0,'_',0xA0,0x20, // space .*.. 142 0x0A4,'_',0xA4,0xFD, // ¤ .*.. 143 0x0A6,'_',0xA6,'_', // ¦ .*.* 144 0x0B0,0xF8,0xB0,0x9C, // ° 145 0x0B7,0xFA,0xB7,0x9E, // · 146 // 0x2022,,0x95,0x95, //  .*.. 147 // 0x2116,0xFC,0xB9,0x23, // ¹ ...* 148 // 0x2219,,0xF9,0x9E, //  .*.. 149 // 0x221A,0xFB,,0x96, // v ..*. 150 // 0x25A0,0xFE,,0x94, // ¦ 151 0x0000,0,0,0 152 }; 153 \ In segment DATA_C, align 4, align-sorted 154 const unsigned short win2unicode[128]= \ win2unicode: \ 00000000 020403041A20 DC16 1026, 1027, 8218, 1107, 8222, 8230, 8224, 8225, 8364, 8240, 1033 \ 53041E202620 \ 20202120AC20 \ 30200904 \ 00000016 39200A040C04 DC16 8249, 1034, 1036, 1035, 1039, 1106, 8216, 8217, 8220, 8221, 8226 \ 0B040F045204 \ 182019201C20 \ 1D202220 \ 0000002C 132014202000 DC16 8211, 8212, 32, 8482, 1113, 8250, 1114, 1116, 1115, 1119, 160 \ 222159043A20 \ 5A045C045B04 \ 5F04A000 \ 00000042 0E045E040804 DC16 1038, 1118, 1032, 164, 1168, 166, 167, 1025, 169, 1028, 171, 172 \ A4009004A600 \ A7000104A900 \ 0404AB00AC00 \ 0000005A AD00AE000704 DC16 173, 174, 1031, 176, 177, 1030, 1110, 1169, 181, 182, 183, 1105 \ B000B1000604 \ 56049104B500 \ B600B7005104 \ 00000072 16215404BB00 DC16 8470, 1108, 187, 1112, 1029, 1109, 1111, 1040, 1041, 1042, 1043 \ 580405045504 \ 570410041104 \ 12041304 \ 00000088 140415041604 DC16 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054 \ 170418041904 \ 1A041B041C04 \ 1D041E04 \ 0000009E 1F0420042104 DC16 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065 \ 220423042404 \ 250426042704 \ 28042904 \ 000000B4 2A042B042C04 DC16 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076 \ 2D042E042F04 \ 300431043204 \ 33043404 \ 000000CA 350436043704 DC16 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087 \ 380439043A04 \ 3B043C043D04 \ 3E043F04 \ 000000E0 400441044204 DC16 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098 \ 430444044504 \ 460447044804 \ 49044A04 \ 000000F6 4B044C044D04 DC16 1099, 1100, 1101, 1102, 1103 \ 4E044F04 155 { 156 0x0402,0x0403,0x201A,0x0453,0x201E,0x2026,0x2020,0x2021, 157 0x20AC,0x2030,0x0409,0x2039,0x040A,0x040C,0x040B,0x040F, 158 0x0452,0x2018,0x2019,0x201C,0x201D,0x2022,0x2013,0x2014, 159 0x0020,0x2122,0x0459,0x203A,0x045A,0x045C,0x045B,0x045F, 160 0x00A0,0x040E,0x045E,0x0408,0x00A4,0x0490,0x00A6,0x00A7, 161 0x0401,0x00A9,0x0404,0x00AB,0x00AC,0x00AD,0x00AE,0x0407, 162 0x00B0,0x00B1,0x0406,0x0456,0x0491,0x00B5,0x00B6,0x00B7, 163 0x0451,0x2116,0x0454,0x00BB,0x0458,0x0405,0x0455,0x0457, 164 0x0410,0x0411,0x0412,0x0413,0x0414,0x0415,0x0416,0x0417, 165 0x0418,0x0419,0x041A,0x041B,0x041C,0x041D,0x041E,0x041F, 166 0x0420,0x0421,0x0422,0x0423,0x0424,0x0425,0x0426,0x0427, 167 0x0428,0x0429,0x042A,0x042B,0x042C,0x042D,0x042E,0x042F, 168 0x0430,0x0431,0x0432,0x0433,0x0434,0x0435,0x0436,0x0437, 169 0x0438,0x0439,0x043A,0x043B,0x043C,0x043D,0x043E,0x043F, 170 0x0440,0x0441,0x0442,0x0443,0x0444,0x0445,0x0446,0x0447, 171 0x0448,0x0449,0x044A,0x044B,0x044C,0x044D,0x044E,0x044F 172 }; 173 \ In segment CODE, align 4, keep-with-next 174 unsigned int char8to16(int c) 175 { 176 if (c>=128) \ char8to16: \ 00000000 800050E3 CMP R0,#+128 \ 00000004 1EFF2FB1 BXLT LR 177 { 178 return(win2unicode[c-128]); \ 00000008 0C209FE5 LDR R2,??char8to16_0 ;; win2unicode \ 0000000C FF10E0E3 MVN R1,#+255 \ 00000010 800082E0 ADD R0,R2,R0, LSL #+1 \ 00000014 B00091E1 LDRH R0,[R1, +R0] 179 } 180 return(c); \ 00000018 1EFF2FE1 BX LR ;; return \ ??char8to16_0: \ 0000001C ........ DC32 win2unicode 181 } 182 \ In segment CODE, align 4, keep-with-next 183 unsigned int char16to8(unsigned int c) 184 { 185 const TUNICODE2CHAR *p=unicode2char; \ char16to8: \ 00000000 38109FE5 LDR R1,??char16to8_0 ;; unicode2char 186 unsigned int i; 187 if (c<128) return(c); \ 00000004 800050E3 CMP R0,#+128 \ 00000008 0100002A BCS ??char16to8_1 \ 0000000C 1EFF2FE1 BX LR 188 while((i=p->u)) 189 { 190 if (c==i) 191 { 192 return(p->win); 193 } 194 p++; \ ??char16to8_2: \ 00000010 061081E2 ADD R1,R1,#+6 \ ??char16to8_1: \ 00000014 B020D1E1 LDRH R2,[R1, #+0] \ 00000018 000052E3 CMP R2,#+0 \ 0000001C 0300000A BEQ ??char16to8_3 \ 00000020 020050E1 CMP R0,R2 \ 00000024 F9FFFF1A BNE ??char16to8_2 \ 00000028 0300D1E5 LDRB R0,[R1, #+3] \ 0000002C 1EFF2FE1 BX LR 195 } 196 c&=0xFF; \ ??char16to8_3: \ 00000030 FF0000E2 AND R0,R0,#0xFF 197 if (c<32) return(' '); \ 00000034 200050E3 CMP R0,#+32 \ 00000038 2000A033 MOVCC R0,#+32 198 return(c); \ 0000003C 1EFF2FE1 BX LR ;; return \ ??char16to8_0: \ 00000040 ........ DC32 unicode2char 199 } 200 \ In segment CODE, align 4, keep-with-next 201 void ascii2ws(WSHDR *ws, const char *s) 202 { \ ascii2ws: \ 00000000 30402DE9 PUSH {R4,R5,LR} \ 00000004 0040A0E1 MOV R4,R0 \ 00000008 0150A0E1 MOV R5,R1 203 char c; 204 CutWSTR(ws,0); \ 0000000C 0010A0E3 MOV R1,#+0 \ 00000010 260100EF SWI +294 \ 00000014 030000EA B ??ascii2ws_0 205 while((c=*s++)) 206 { 207 wsAppendChar(ws,char8to16(c)); \ ??ascii2ws_1: \ 00000018 ........ BL char8to16 \ 0000001C 0010A0E1 MOV R1,R0 \ 00000020 0400A0E1 MOV R0,R4 \ 00000024 1C0000EF SWI +28 208 } \ ??ascii2ws_0: \ 00000028 ........ LDRB R1,[R5], #+1 \ 0000002C 0100B0E1 MOVS R0,R1 \ 00000030 F8FFFF1A BNE ??ascii2ws_1 209 } \ 00000034 3080BDE8 POP {R4,R5,PC} ;; return 210 \ In segment CODE, align 4, keep-with-next 211 int convWS_to_ANSI(WSHDR *ws, char *buf) 212 { \ convWS_to_ANSI: \ 00000000 F0402DE9 PUSH {R4-R7,LR} \ 00000004 0040A0E1 MOV R4,R0 213 unsigned int sWs=ws->wsbody[0]; \ 00000008 000094E5 LDR R0,[R4, #+0] \ 0000000C 0150A0E1 MOV R5,R1 \ 00000010 B060D0E1 LDRH R6,[R0, #+0] 214 int p=0; \ 00000014 0070A0E3 MOV R7,#+0 \ ??convWS_to_ANSI_0: \ 00000018 060057E1 CMP R7,R6 \ 0000001C 0700002A BCS ??convWS_to_ANSI_1 215 unsigned int cWs; 216 while((p<255)&&(pwsbody[p+1]; 219 buf[p]=char16to8(cWs); \ 00000020 000094E5 LDR R0,[R4, #+0] \ 00000024 870080E0 ADD R0,R0,R7, LSL #+1 \ 00000028 B200D0E1 LDRH R0,[R0, #+2] \ 0000002C ........ BL char16to8 \ 00000030 0500C7E7 STRB R0,[R7, +R5] 220 p++; \ 00000034 017087E2 ADD R7,R7,#+1 221 } \ 00000038 FF0057E3 CMP R7,#+255 \ 0000003C F5FFFFBA BLT ??convWS_to_ANSI_0 222 buf[p] = 0; \ ??convWS_to_ANSI_1: \ 00000040 0000A0E3 MOV R0,#+0 \ 00000044 0500C7E7 STRB R0,[R7, +R5] 223 return p; \ 00000048 0700A0E1 MOV R0,R7 \ 0000004C F080BDE8 POP {R4-R7,PC} ;; return 224 } Maximum stack usage in bytes: Function CSTACK -------- ------ MakeGlobalString 24 ascii2ws 12 char16to8 0 char8to16 0 convWS_to_ANSI 20 strcmp_nocase 0 Segment part sizes: Function/Label Bytes -------------- ----- MakeGlobalString 88 ??strcmp_nocase_0 48 unicode2char 600 win2unicode 256 char8to16 32 char16to8 68 ascii2ws 56 convWS_to_ANSI 80 Others 24 396 bytes in segment CODE 856 bytes in segment DATA_C 372 bytes of CODE memory (+ 24 bytes shared) 856 bytes of CONST memory Errors: none Warnings: none