Keil c51 v7.05 и mspgcc-20030506 ...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Sot 29 июня 2003 г. 15:32
В ответ на: To All. Ув. коллеги. Большая просьба к пользователям X51, PIC и MSP430. отправлено Bill 28 июня 2003 г. 22:35

Keil C51:

----- FUNCTION _Bits1 (BEGIN) -----
FILE: 'main.c'
25: char Bits1(unsigned word) {
26: char count = 0;
;---- Variable 'word' assigned to Register 'R6/R7' ----
27:
;---- Variable 'count' assigned to Register 'R1' ----
0015DD E4 CLR A
0015DE F9 MOV R1,A
28: if(word) do { ++count; } while(word &= word - 1);
0015DF EF MOV A,R7
0015E0 4E ORL A,R6
0015E1 6012 JZ ?C0001?MAIN
0015E3 ?C0004?MAIN:
0015E3 09 INC R1
0015E4 EF MOV A,R7
0015E5 24FF ADD A,#0FFH
0015E7 FD MOV R5,A
0015E8 EE MOV A,R6
0015E9 34FF ADDC A,#0FFH
0015EB 5E ANL A,R6
0015EC FC MOV R4,A
0015ED EF MOV A,R7
0015EE 5D ANL A,R5
0015EF AE04 MOV R6,AR4
0015F1 FF MOV R7,A
0015F2 4C ORL A,R4
0015F3 70EE JNZ ?C0004?MAIN
0015F5 ?C0001?MAIN:
29:
30: return count;
0015F5 AF01 MOV R7,AR1
31: }
0015F7 22 RET
----- FUNCTION _Bits1 (END) -------

mspgcc:

char Bits1(unsigned word) {
8054: 0e 4f mov r15, r14 ;
char count = 0;
8056: 4d 43 clr.b r13 ;

if(word) do { ++count; } while(word &= word - 1);
8058: 0f 93 cmp #0, r15 ;r3 As==00
805a: 05 24 jz $+12 ;abs 0x8066
805c: 5d 53 inc.b r13 ;
805e: 0f 4e mov r14, r15 ;
8060: 3f 53 add #-1, r15 ;r3 As==11
8062: 0e ff and r15, r14 ;
8064: fb 23 jnz $-8 ;abs 0x805c

return count;
8066: 4f 4d mov.b r13, r15 ;
8068: 8f 11 sxt r15 ;
}
806a: 30 41 ret

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

Ответы



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

E-mail: info@telesys.ru