для UNICODE. Правда, такой пример на практике редко можно встретить. Но, тем не менее... Для MSP компилятор сгенерировал такой код (возможно, вручную его можно слегка улучшить).
41 while (*--dst = *--src);
\ ??revcpy_0:
\ 000000 3C50FEFF ADD.W #0xfffe, R12
\ 000004 3E50FEFF ADD.W #0xfffe, R14
\ 000008 2F4E MOV.W @R14, R15
\ 00000A 8C4F0000 MOV.W R15, 0(R12)
\ 00000E 0F93 CMP.W #0x0, R15
\ 000010 F723 JNE ??revcpy_0
Для AVR компилятор сгенрировал такой код (по-моему, короче его не сделаешь).
191 while (*--dst = *--src);
\ ??revcpy_0:
\ 00000006 911E LD R17,-X
\ 00000008 910E LD R16,-X
\ 0000000A 9312 ST -Z,R17
\ 0000000C 9302 ST -Z,R16
\ 0000000E 2B01 OR R16,R17
\ 00000010 F7D1 BRNE ??revcpy_0
Данный пример показывает, что наличие эффективных методов адресации зачастую важнее, чем разрядность данных. Конечно, когда речь идет об арифметике, то MSP должен оставить AVR далеко позади.
-
- Sorry, форматирование сбилось. Bill(1271 знак., 12.01.2004 23:51)