Это было в Thumb режиме, в ARM режиме еще хуже :))) (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено ShiphT 18 сентября 2003 г. 17:13
В ответ на: ARM (7, 9, 920 - значения не имеет ибо код одинаковый) отправлено ShiphT 18 сентября 2003 г. 17:03

   \                                 In segment NEARFUNC_A, align 4, keep-with-next
\ 00000000 CODE32
5 int mean(int *ap, unsigned int count)
6 {
\ mean??rA:
\ mean:
\ 00000000 00402DE9 STMDB SP!,{LR} ;; Push
7 unsigned int _cnt = count; // Сохранить число данных
\ 00000004 0130A0E1 MOV R3,R1
8 long sum = 0; // Обнулить сумму
\ 00000008 0020A0E3 MOV R2,#+0x0
9
10 do{ // Суммирование
11 sum += *ap++;
\ ??mean_0:
\ 0000000C 00C090E5 LDR R12,[R0, #+0]
\ 00000010 0C2092E0 ADDS R2,R2,R12
\ 00000014 040090E2 ADDS R0,R0,#+0x4
12 }
13 while (--count);
\ 00000018 011051E2 SUBS R1,R1,#+0x1
\ 0000001C 000051E3 CMP R1,#+0x0
\ 00000020 F9FFFF1A BNE ??mean_0
14 return sum / _cnt; // Вернуть среднее значение
\ 00000024 0200A0E1 MOV R0,R2
\ 00000028 0310A0E1 MOV R1,R3
\ 0000002C ........ BL ??divu32_a
\ 00000030 0100A0E1 MOV R0,R1
\ 00000034 0040BDE8 LDMIA SP!,{LR} ;; Pop
\ 00000038 1EFF2FE1 BX LR ;; return
15
16 }
17

Maximum stack usage in bytes:

Function CSTACK
-------- ------
mean 4


Segment part sizes:

Function/Label Bytes
-------------- -----
mean 60


64 bytes in segment NEARFUNC_A

64 bytes of CODE memory

Errors: none
Warnings: none


Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru