Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Пробую WinAVR... ("Program: 246 bytes (3.0% Full) Data: 6 bytes (0.6% Full) ") Но это не показатель. Не надо использовать всякий левые СТОРОННИЕ библиотеки, а потом "сравнивать". (тупо и безсмысленно)

Отправлено Юрий_СВ (217.12.195.250) 09 февраля 2011, г. 20:34
В ответ на: Нельзя ли попробовать и рассказать всем, насколько адекватный на приведенном фрагменте? Может, IAR в топку? отправлено IdleMode 09 февраля 2011, г. 19:35

Тип контроллера автор не указал. Я компилировал под mega88. Соответственно, PORTE заменил на PORTC :
#include <avr/io.h>

void main(void)
{
for(char z=0; z<6; z++)
{
if( PINC ) {PORTC++; PORTB+=7; printf("*");}
else {PORTC++; PORTD+=45;printf("?");}
}
}
//=====================================================
А вот сам код. сгенирированый WinAVR:
uu.elf: file format elf32-avr

Sections:
Idx Name Size VMA LMA File off Algn
0 .text 000000f6 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .bss 00000006 00800100 00800100 0000016a 2**0
ALLOC
2 .debug_aranges 00000020 00000000 00000000 0000016a 2**0
CONTENTS, READONLY, DEBUGGING
3 .debug_pubnames 0000001b 00000000 00000000 0000018a 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_info 00000095 00000000 00000000 000001a5 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_abbrev 00000059 00000000 00000000 0000023a 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_line 00000079 00000000 00000000 00000293 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_frame 00000020 00000000 00000000 0000030c 2**2
CONTENTS, READONLY, DEBUGGING
8 .debug_str 0000006a 00000000 00000000 0000032c 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_loc 00000013 00000000 00000000 00000396 2**0
CONTENTS, READONLY, DEBUGGING

Disassembly of section .text:

00000000 <__vectors>:
0: 19 c0 rjmp .+50 ; 0x34 <__ctors_end>
2: 28 c0 rjmp .+80 ; 0x54 <__bad_interrupt>
4: 27 c0 rjmp .+78 ; 0x54 <__bad_interrupt>
6: 26 c0 rjmp .+76 ; 0x54 <__bad_interrupt>
8: 25 c0 rjmp .+74 ; 0x54 <__bad_interrupt>
a: 24 c0 rjmp .+72 ; 0x54 <__bad_interrupt>
c: 23 c0 rjmp .+70 ; 0x54 <__bad_interrupt>
e: 22 c0 rjmp .+68 ; 0x54 <__bad_interrupt>
10: 21 c0 rjmp .+66 ; 0x54 <__bad_interrupt>
12: 20 c0 rjmp .+64 ; 0x54 <__bad_interrupt>
14: 1f c0 rjmp .+62 ; 0x54 <__bad_interrupt>
16: 1e c0 rjmp .+60 ; 0x54 <__bad_interrupt>
18: 1d c0 rjmp .+58 ; 0x54 <__bad_interrupt>
1a: 1c c0 rjmp .+56 ; 0x54 <__bad_interrupt>
1c: 1b c0 rjmp .+54 ; 0x54 <__bad_interrupt>
1e: 1a c0 rjmp .+52 ; 0x54 <__bad_interrupt>
20: 19 c0 rjmp .+50 ; 0x54 <__bad_interrupt>
22: 18 c0 rjmp .+48 ; 0x54 <__bad_interrupt>
24: 17 c0 rjmp .+46 ; 0x54 <__bad_interrupt>
26: 16 c0 rjmp .+44 ; 0x54 <__bad_interrupt>
28: 15 c0 rjmp .+42 ; 0x54 <__bad_interrupt>
2a: 14 c0 rjmp .+40 ; 0x54 <__bad_interrupt>
2c: 13 c0 rjmp .+38 ; 0x54 <__bad_interrupt>
2e: 12 c0 rjmp .+36 ; 0x54 <__bad_interrupt>
30: 11 c0 rjmp .+34 ; 0x54 <__bad_interrupt>
32: 10 c0 rjmp .+32 ; 0x54 <__bad_interrupt>

00000034 <__ctors_end>:
34: 11 24 eor r1, r1
36: 1f be out 0x3f, r1 ; 63
38: cf ef ldi r28, 0xFF ; 255
3a: d4 e0 ldi r29, 0x04 ; 4
3c: de bf out 0x3e, r29 ; 62
3e: cd bf out 0x3d, r28 ; 61

00000040 <__do_clear_bss>:
40: 11 e0 ldi r17, 0x01 ; 1
42: a0 e0 ldi r26, 0x00 ; 0
44: b1 e0 ldi r27, 0x01 ; 1
46: 01 c0 rjmp .+2 ; 0x4a <.do_clear_bss_start>

00000048 <.do_clear_bss_loop>:
48: 1d 92 st X+, r1

0000004a <.do_clear_bss_start>:
4a: a6 30 cpi r26, 0x06 ; 6
4c: b1 07 cpc r27, r17
4e: e1 f7 brne .-8 ; 0x48 <.do_clear_bss_loop>
50: 02 d0 rcall .+4 ; 0x56 <main>
52: 4f c0 rjmp .+158 ; 0xf2 <_exit>

00000054 <__bad_interrupt>:
54: d5 cf rjmp .-86 ; 0x0 <__vectors>

00000056 <main>:
#include <avr/io.h>

void main(void)
{
56: 1f 93 push r17
58: 10 e0 ldi r17, 0x00 ; 0
for(char z=0; z<6; z++)
{
if( PINC ) {PORTC++; PORTB+=7; printf("*");}
5a: 86 b1 in r24, 0x06 ; 6
5c: 88 23 and r24, r24
5e: 49 f0 breq .+18 ; 0x72 <main+0x1c>
60: 88 b1 in r24, 0x08 ; 8
62: 8f 5f subi r24, 0xFF ; 255
64: 88 b9 out 0x08, r24 ; 8
66: 85 b1 in r24, 0x05 ; 5
68: 89 5f subi r24, 0xF9 ; 249
6a: 85 b9 out 0x05, r24 ; 5
6c: 8a e2 ldi r24, 0x2A ; 42
6e: 90 e0 ldi r25, 0x00 ; 0
70: 08 c0 rjmp .+16 ; 0x82 <main+0x2c>
else {PORTC++; PORTD+=45;printf("?");}
72: 88 b1 in r24, 0x08 ; 8
74: 8f 5f subi r24, 0xFF ; 255
76: 88 b9 out 0x08, r24 ; 8
78: 8b b1 in r24, 0x0b ; 11
7a: 83 5d subi r24, 0xD3 ; 211
7c: 8b b9 out 0x0b, r24 ; 11
7e: 8f e3 ldi r24, 0x3F ; 63
80: 90 e0 ldi r25, 0x00 ; 0
82: 05 d0 rcall .+10 ; 0x8e <putchar>
#include <avr/io.h>

void main(void)
{
for(char z=0; z<6; z++)
84: 1f 5f subi r17, 0xFF ; 255
86: 16 30 cpi r17, 0x06 ; 6
88: 41 f7 brne .-48 ; 0x5a <main+0x4>
{
if( PINC ) {PORTC++; PORTB+=7; printf("*");}
else {PORTC++; PORTD+=45;printf("?");}
}
}
8a: 1f 91 pop r17
8c: 08 95 ret

0000008e <putchar>:
8e: 60 91 02 01 lds r22, 0x0102
92: 70 91 03 01 lds r23, 0x0103
96: 01 d0 rcall .+2 ; 0x9a <fputc>
98: 08 95 ret

0000009a <fputc>:
9a: 0f 93 push r16
9c: 1f 93 push r17
9e: cf 93 push r28
a0: df 93 push r29
a2: 8c 01 movw r16, r24
a4: eb 01 movw r28, r22
a6: 8b 81 ldd r24, Y+3 ; 0x03
a8: 81 ff sbrs r24, 1
aa: 1b c0 rjmp .+54 ; 0xe2 <fputc+0x48>
ac: 82 ff sbrs r24, 2
ae: 0d c0 rjmp .+26 ; 0xca <fputc+0x30>
b0: 2e 81 ldd r18, Y+6 ; 0x06
b2: 3f 81 ldd r19, Y+7 ; 0x07
b4: 8c 81 ldd r24, Y+4 ; 0x04
b6: 9d 81 ldd r25, Y+5 ; 0x05
b8: 28 17 cp r18, r24
ba: 39 07 cpc r19, r25
bc: 64 f4 brge .+24 ; 0xd6 <fputc+0x3c>
be: e8 81 ld r30, Y
c0: f9 81 ldd r31, Y+1 ; 0x01
c2: 01 93 st Z+, r16
c4: f9 83 std Y+1, r31 ; 0x01
c6: e8 83 st Y, r30
c8: 06 c0 rjmp .+12 ; 0xd6 <fputc+0x3c>
ca: e8 85 ldd r30, Y+8 ; 0x08
cc: f9 85 ldd r31, Y+9 ; 0x09
ce: 80 2f mov r24, r16
d0: 09 95 icall
d2: 89 2b or r24, r25
d4: 31 f4 brne .+12 ; 0xe2 <fputc+0x48>
d6: 8e 81 ldd r24, Y+6 ; 0x06
d8: 9f 81 ldd r25, Y+7 ; 0x07
da: 01 96 adiw r24, 0x01 ; 1
dc: 9f 83 std Y+7, r25 ; 0x07
de: 8e 83 std Y+6, r24 ; 0x06
e0: 02 c0 rjmp .+4 ; 0xe6 <fputc+0x4c>
e2: 0f ef ldi r16, 0xFF ; 255
e4: 1f ef ldi r17, 0xFF ; 255
e6: c8 01 movw r24, r16
e8: df 91 pop r29
ea: cf 91 pop r28
ec: 1f 91 pop r17
ee: 0f 91 pop r16
f0: 08 95 ret

000000f2 <_exit>:
f2: f8 94 cli

000000f4 <__stop_program>:
f4: ff cf rjmp .-2 ; 0xf4 <__stop_program>


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
вычтите два из трёх, получится:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru