Маленький пример
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Bill 25 ноября 2004 г. 13:15
В ответ на: дядьки, раскажите в кратце про MSP, на словах понятных тому кто работает с сигналами, авр, мотором68мым, чуток с i196 и чуток с пиком. Ненада говорить что он примерно такой как фуджи или раббит;) отправлено колян безпарольный 25 ноября 2004 г. 00:44

Вот функция


unsigned *wordcopy(unsigned *dst, unsigned *src, int count)
{
unsigned *temp = dst;

while (count--)
*dst++ = *src++;
return temp;
}


Результат для MSP430

\ wordcopy:
49 {
\ 000000 0A12 PUSH.W R10
\ 000002 1A410400 MOV.W 0x4(SP), R10
50 unsigned *temp = dst;
\ 000006 0D4C MOV.W R12, R13
\ 000008 043C JMP ??wordcopy_1
51
52 while (count--)
53 *dst++ = *src++;
\ ??wordcopy_0:
\ 00000A 0F4C MOV.W R12, R15
\ 00000C 2C53 ADD.W #0x2, R12
\ 00000E BF4E0000 MOV.W @R14+, 0(R15)
\ ??wordcopy_1:
\ 000012 0F4A MOV.W R10, R15
\ 000014 3A53 ADD.W #0xffff, R10
\ 000016 0F93 CMP.W #0x0, R15
\ 000018 F823 JNE ??wordcopy_0
54 return temp;
\ 00001A 0C4D MOV.W R13, R12
\ 00001C 3A41 POP.W R10
\ 00001E 3041 RET
55 }

Maximum stack usage in bytes:

Function CSTACK
-------- ------
wordcopy 4

Segment part sizes:

Function/Label Bytes
-------------- -----
wordcopy 32


Здесь для AVR Mega

\ wordcopy:
\ 00000000 2F5B MOV R21,R27
\ 00000002 2F6A MOV R22,R26
\ 00000004 2FA0 MOV R26,R16
\ 00000006 2FE1 MOV R30,R17
3 unsigned *temp = dst;
\ 00000008 2F40 MOV R20,R16
\ 0000000A C006 RJMP ??wordcopy_0
4
5 while (count--)
6 *dst++ = *src++;
\ ??wordcopy_1:
\ 0000000C E0F0 LDI R31,0
\ 0000000E 9101 LD R16,Z+
\ 00000010 9111 LD R17,Z+
\ 00000012 E0B0 LDI R27,0
\ 00000014 930D ST X+,R16
\ 00000016 931D ST X+,R17
\ ??wordcopy_0:
\ 00000018 0189 MOVW R17 : R16,R19 : R18
\ 0000001A 5021 SUBI R18,1
\ 0000001C 4030 SBCI R19,0
\ 0000001E 2B01 OR R16,R17
\ 00000020 F7A9 BRNE ??wordcopy_1
7 return temp;
\ 00000022 2F04 MOV R16,R20
\ 00000024 2FA6 MOV R26,R22
\ 00000026 2FB5 MOV R27,R21
\ 00000028 9508 RET
8 }

Maximum stack usage in bytes:

Function CSTACK RSTACK
-------- ------ ------
wordcopy 0 0

42 bytes in segment CODE


А вообще, можжно сравнивать и дальше.

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

Ответы



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

E-mail: info@telesys.ru