ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
26 ноября
81320 Топик полностью
д__ (14.02.2007 22:38, просмотров: 1) ответил д__ на И напишу, а на АРМе вы соврали в 25 раз
Спасибо! Успехи действительно есть! Всего 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