Czy kolejne wersje win-avr-gcc generują coraz dłuższy kod?

Zaczynam zabawę z AVR-ami. Mam program skompilowany przez autora pod Win-avr-3.4.6 i zajmuje on ok.

2kB. Ten sam program skompilowany ze źródła pod wersją 4.1.2 zajmuje ponad 4kB (opcja -0s). Podobno następne wersje generują coraz dłuższe kody, ale taka zmiana - to chyba niemożliwe. pozdrawiam, Andrzej
Reply to
Andrzej
Loading thread data ...

W dniu 2011-03-23 14:26, Andrzej pisze:

pewnie ten sam kod napisany poprostu w assemblerze zajalby kilkaset bajtow.

Reply to
Zakarm

W dniu 2011-03-23 14:26 Andrzej napisał(a):

Możliwe i właśnie tak jest. Niestety dodanie wsparcia nowych/dużych procków spowodowało pogorszenie kodu wynikowego nawet w małych prockach. Wróć do starego gcc i już.

Reply to
Adam Dybkowski

Użytkownik "Andrzej" snipped-for-privacy@op.pl napisał w wiadomości news:imcsdc$ujm$ snipped-for-privacy@news.onet.pl...

No niestety. Żadne pomysły nie zadziałały. Stary gcc też generuje kod ok. 4kB. Po prostu wezmę większy procesor. Będę miał możliwość większych modyfikacji kodu, więc może więcej się nauczę. ATTiny poczeka w cieple na jakiś mniejszy projekt. Dziękuję wszystkim za pomoc. PS. Chciałem podziałać w C. Tyle się mówi o przenośności kodu. W asemblerze już programowałem: 6800, 8080, 8068 (ach, te segmenty!), najwięcej Z-80. Potem była długa przerwa. pozdrawiam, Andrzej

Reply to
Andrzej

Co to za kod, mozna go skads sciagnac? Moze ktos inny odkryje w czym problem.

Swoja droga wiekszy procesor na poczatek to niezly pomysl, poeksperymentujesz z C a nie bedziesz sie rozpraszal na uboczne problemy.

Tomek

Reply to
Tom

Używam starego WinAVR. Chciałem przesiąść się na nową wersję. Gdy zobaczyłem, że binarka jest znacząco większa w nowym WinAVR, to szybciutko wróciłem do starej wersji i tyle.

R.

Reply to
Robbo

Więc pokaż źródła i makefile.

Nie. Po prostu zobaczymy dlaczego generuje duzo bo może generuje

*dobrze* a autor kodu sciemnia.
Reply to
Sebastian Biały

Użytkownik "Robbo" snipped-for-privacy@mmm.com napisał w wiadomości news:4d8b2170$0$2506$ snipped-for-privacy@news.neostrada.pl...

Starą czyli jaką? Jakiś numerek możesz podać?

Reply to
Marcin Wasilewski

Zmieniłeś też wersję avr-libc? Widzę tam operacje na float (double, ale to i tak float), od którejś wersji avr-libc te procedury bardzo "spuchły". Dowolna operacja na float to chyba 3 kB kodu na dzień dobry. We wcześniejszej wersji było dużo mniej, około 1 kB.

Reply to
shg

On 2011-03-24 22:23, Andrzej wrote: [.....]

tak ogólnie i gcc to już nie... W każdym bądź razie ściągnąłem plik

2313LCmeter_070217A_project.zip, rozpakowałem i odpaliłem serię komend:

D:\Temp\LCMeter>make clean

-------- begin --------

Cleaning project: rm -f 2313LCmeter.hex rm -f 2313LCmeter.eep rm -f 2313LCmeter.cof rm -f 2313LCmeter.elf rm -f 2313LCmeter.map rm -f 2313LCmeter.sym rm -f 2313LCmeter.lss rm -f 2313LCmeter.o rm -f 2313LCmeter.lst rm -f 2313LCmeter.s rm -f 2313LCmeter.d rm -f .dep/*

-------- end --------

D:\Temp\LCMeter>make

-------- begin -------- avr-gcc (WinAVR 20100110) 4.3.3 Copyright (C) 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Compiling: 2313LCmeter.c avr-gcc -c -mmcu=at90s2313 -I. -gdwarf-2 -DF_CPU=4000000UL -Os

-funsigned-char

-funsigned-bitfields -fpack-struct -fshort-enums -Wall

-Wstrict-prototypes -Wa,- adhlns=2313LCmeter.lst -std=gnu99 -MD -MP -MF .dep/2313LCmeter.o.d

2313LCmeter. c -o 2313LCmeter.o

Linking: 2313LCmeter.elf avr-gcc -mmcu=at90s2313 -I. -gdwarf-2 -DF_CPU=4000000UL -Os

-funsigned-char -fu nsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes

-Wa,-adh lns=2313LCmeter.o -std=gnu99 -MD -MP -MF .dep/2313LCmeter.elf.d

2313LCmeter.o -

-output 2313LCmeter.elf -Wl,-Map=2313LCmeter.map,--cref -lm

Creating load file for Flash: 2313LCmeter.hex avr-objcopy -O ihex -R .eeprom 2313LCmeter.elf 2313LCmeter.hex

Creating load file for EEPROM: 2313LCmeter.eep avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \ --change-section-lma .eeprom=0 -O ihex 2313LCmeter.elf

2313LCmeter.eep c:\Tools\WinAVR\bin\avr-objcopy.exe: --change-section-lma .eeprom=0x00000000 nev er used

Creating Extended Listing: 2313LCmeter.lss avr-objdump -h -S 2313LCmeter.elf > 2313LCmeter.lss

Creating Symbol Table: 2313LCmeter.sym avr-nm -n 2313LCmeter.elf > 2313LCmeter.sym

Size after:

2313LCmeter.elf : section size addr .text 2158 0 .data 54 8388704 .bss 12 8388758 .debug_aranges 32 0 .debug_pubnames 292 0 .debug_info 872 0 .debug_abbrev 399 0 .debug_line 922 0 .debug_frame 208 0 .debug_str 343 0 .debug_loc 106 0 Total 5398

-------- end --------

D:\Temp\LCMeter>avr-size 2313LCmeter.elf text data bss dec hex filename 2158 54 12 2224 8b0 2313LCmeter.elf

I jak widać w powyższej linii, wychodzi mi, że program zajmuje ~2,2kB.

Reply to
JDX

U¿ytkownik "shg" snipped-for-privacy@gmail.com napisa³ w wiadomo¶ci news: snipped-for-privacy@d16g2000yqd.googlegroups.com... [ciach]

Wyci±³em z komputera WinAvr i zainstalowa³em wersjê z gcc 3.4.6 ze wszystkimi bibliotekami. Jak mówi³em do tej wersji gcc przyznaje siê autor.

A nie pamiêtasz czym siê chwalili, jak powsta³a ta nowa wersja. Musia³a czym¶ siê ró¿niæ skoro "spuch³a". Tak na razie nie wiem, której wersji szukaæ.

Reply to
Andrzej

Różni się pierdołami, które przydają się od święta. Obsługa NaN-ów, liczb zdenormalizowanych itp. Jest też chyba kilka razy szybsza.

Reply to
shg

Dziêki. Czyli nie nowa wersja AVR-gcc. Mój b³±d. Poniewa¿ zmienia³em kod, wygenerowa³em makefile klikaj±c w Avr-studio. Potem, gdy mi pokaza³o rozmiar ponad 4 kB, wgra³em ¼ród³o autora, ale u¿ywa³em swojego makefile. Teraz prze weekend spokojnie porównam oba makefile i znajdê (mam nadziejê przyczynê. Jeszcze raz dziekujê i pozdrawiam, Andrzej

Reply to
Andrzej

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.