Спасибо! Успехи действительно есть! Всего 92 такта... На процике не дороже 16меги... К сожалению ИАРовский компилер тоже не годится для серьезной работы...
Я думаю, со временем они тоже подтянутся...
Так, что можно считать Кейловский компилер вне конкуренции...
ARM
AREA ||.text.7||, CODE, READONLY, ALIGN=2
atoi PROC
;;;8 {
;;;9 rslt[i]=val % 10+'0';
000000 e59f3128 LDR r3,|L1.304|
000004 e3a02000 MOV r2,#0 ;6
000008 e52d4004 PUSH {r4} ;4
00000c e5e02005 STRB r2,[r0,#5]! ;6
000010 e082c193 UMULL r12,r2,r3,r1
000014 e1a021a2 LSR r2,r2,#3
000018 e0422082 SUB r2,r2,r2,LSL #1
00001c e0822102 ADD r2,r2,r2,LSL #2
000020 e0812082 ADD r2,r1,r2,LSL #1
000024 e2822030 ADD r2,r2,#0x30
000028 e5602001 STRB r2,[r0,#-1]!
;;;10 val /=10;
00002c e0812193 UMULL r2,r1,r3,r1
000030 e1a011a1 LSR r1,r1,#3
000034 e3a02002 MOV r2,#2 ;7
|L1.56|
000038 e08c4193 UMULL r4,r12,r3,r1 ;9
00003c e1a0c1ac LSR r12,r12,#3 ;9
000040 e04cc08c SUB r12,r12,r12,LSL #1 ;9
000044 e08cc10c ADD r12,r12,r12,LSL #2 ;9
000048 e081c08c ADD r12,r1,r12,LSL #1 ;9
00004c e28cc030 ADD r12,r12,#0x30 ;9
000050 e540c001 STRB r12,[r0,#-1] ;9
000054 e081c193 UMULL r12,r1,r3,r1
000058 e1a011a1 LSR r1,r1,#3
00005c e08c4193 UMULL r4,r12,r3,r1 ;9
000060 e1a0c1ac LSR r12,r12,#3 ;9
000064 e04cc08c SUB r12,r12,r12,LSL #1 ;9
000068 e08cc10c ADD r12,r12,r12,LSL #2 ;9
00006c e081c08c ADD r12,r1,r12,LSL #1 ;9
000070 e28cc030 ADD r12,r12,#0x30 ;9
000074 e560c002 STRB r12,[r0,#-2]! ;9
000078 e081c193 UMULL r12,r1,r3,r1
00007c e2522001 SUBS r2,r2,#1
000080 e1a011a1 LSR r1,r1,#3
000084 1affffeb BNE |L1.56|
;;;11 }
;;;12 }
000088 e49d4004 POP {r4}
00008c e12fff1e BX lr
ENDP
main PROC
000090 e59f209c LDR r2,|L1.308| ;6
000094 e59f3094 LDR r3,|L1.304| ;9
;;;13 char rslt[6];
;;;14 int main(void)
;;;15 {
;;;16 atoi(rslt,65535);
000098 e3a00801 MOV r0,#0x10000
00009c e3a01000 MOV r1,#0 ;6
0000a0 e52d4004 PUSH {r4} ;15
0000a4 e2400001 SUB r0,r0,#1
0000a8 e5c21005 STRB r1,[r2,#5] ;6
0000ac e082c093 UMULL r12,r2,r3,r0 ;9
0000b0 e1a021a2 LSR r2,r2,#3 ;9
0000b4 e0422082 SUB r2,r2,r2,LSL #1 ;9
0000b8 e0822102 ADD r2,r2,r2,LSL #2 ;9
0000bc e0802082 ADD r2,r0,r2,LSL #1 ;9
0000c0 e0801093 UMULL r1,r0,r3,r0 ;10
0000c4 e282c030 ADD r12,r2,#0x30 ;9
0000c8 e59f2068 LDR r2,|L1.312| ;9
0000cc e1a011a0 LSR r1,r0,#3 ;10
0000d0 e3a00002 MOV r0,#2 ;7
0000d4 e5c2c000 STRB r12,[r2,#0] ;9
|L1.216|
0000d8 e08c4193 UMULL r4,r12,r3,r1 ;9
0000dc e1a0c1ac LSR r12,r12,#3 ;9
0000e0 e04cc08c SUB r12,r12,r12,LSL #1 ;9
0000e4 e08cc10c ADD r12,r12,r12,LSL #2 ;9
0000e8 e081c08c ADD r12,r1,r12,LSL #1 ;9
0000ec e28cc030 ADD r12,r12,#0x30 ;9
0000f0 e542c001 STRB r12,[r2,#-1] ;9
0000f4 e081c193 UMULL r12,r1,r3,r1 ;10
0000f8 e1a011a1 LSR r1,r1,#3 ;10
0000fc e08c4193 UMULL r4,r12,r3,r1 ;9
000100 e1a0c1ac LSR r12,r12,#3 ;9
000104 e04cc08c SUB r12,r12,r12,LSL #1 ;9
000108 e08cc10c ADD r12,r12,r12,LSL #2 ;9
00010c e081c08c ADD r12,r1,r12,LSL #1 ;9
000110 e28cc030 ADD r12,r12,#0x30 ;9
000114 e562c002 STRB r12,[r2,#-2]! ;9
000118 e081c193 UMULL r12,r1,r3,r1 ;10
00011c e2500001 SUBS r0,r0,#1 ;10
000120 e1a011a1 LSR r1,r1,#3 ;10
000124 1affffeb BNE |L1.216| ;10
000128 e49d4004 POP {r4} ;10
;;;17 }
00012c e12fff1e BX lr
|L1.304|
000130 cccccccd DCD 0xcccccccd
|L1.308|
000134 00000000 DCD ||.data||
|L1.312|
000138 00000004 DCD ||.data|| + 4
ENDP
AREA ||.data||, DATA, ALIGN=0
rslt
DCDU 0x00000000
DCB 0x00,0x00