Goto page Previous 1, 2, 3, 4, 5, 6, 7 Next
J.F.
Guest
Thu May 06, 2004 4:44 pm
On Thu, 06 May 2004 15:51:19 +0200, Milosz Skowyra wrote:
Quote:
I jeszcze jedno. Kompilacja tego powyzej daje w liniach oznaczonych
##### warninga
"main.c:16: warning: assignment from incompatible pointer type". Mam
racje ze chodzi o to ze 2 bajtowy pointer nie miesci sie w char-ze ??
Nie - chodzi o to ze zmieniasz typ wskaznika - tzn typ obiektu
wskazywanego.
A potem bedziesz narzekal ze xptr+1 to nie jest rowne &x+1 ..
No dobrze, ale ja zrobie jak proponuje Jurek tzn. xptr=(char*) to znow
zgwalce kompilator ??
To nie jest gwalcenie, tylko jawna zmiana typu.
Zakladamy ze programista wie co robi :-)
Quote:
Jak dziala polish_chars[f] to juz podalem
Ale w koncu nie zrozumialem - przekombinowales, czy kompilator
zle dziala ?
Tak dziala i dziala poprawnie konstrukcja:
lcd_port=pgm_read_byte(polish_chars+f);
Ale mi chodzilo o
lcd_port=polish_chars[f] ;
Quote:
To nie dziala (znaczy sie czyta smieci).
lcd_port=pgm_read_byte(polish_chars[f]);
I prawidlowo, bo co tu kazales?
a) bierzemy f-ty element z tablicy polish_chars - nie adres,
ale juz wartosc, czyli te twoje 0x0C np
b) odczytujemy bajt pamieci programu spod adresu bedacego odczytana
poprzednio wartoscia [czyli 0x000C]
Quote:
MOV R31,R15 ;r14-r15 adres
MOV R30,R14
LD R24,Z+ ;tego nie kumkam
A mi sie wydaje ze to na przyszlosc - i tak trzeba wskaznik powiekszyc
Quote:
MOV R14,R30
MOV R15,R31
MOV R30,R24 ;i tego tez
bo tu realizujemy b)
Quote:
CLR R31
wlasnie rozszerzamu uchar do wskaznika czy int
Quote:
LPM
Wyglada jakby z pamieci programu pobieral 1 bajtowy wskaznik do danej we
flashu. Hmmm dlaczego nie wiem.
IMHO - bo mu dokladnie wlasnie to kazales.
Quote:
[...]Na jego podstawie wyklepalem:
const unsigned char polish_chars[] PROGMEM ={
0x0C,0x04,0x06,0x0C,0x04,0x04,0x0E,0x00, //0 - l
PGM_P pol_znak[] ={polish_chars};
Odwolujac sie za pomoca: lcd_port=pgm_read_byte(pol_znak[f]);
Bo na ile sie domyslam to:
a) zadeklarowales tablice wskaznikow pol_znak,
wskazujacych na progmem [kompilator musi to wiedziec zeby wlasciwe
instrukcje stosowac].
b) tablica jest jednoelementowa i zawiera adres [wskazanie w/g
Bieleckiego] polish_chars
c) pol_znak[f] jest f-tym wskaznikiem w tablicy pol_znak - czyli
smieciami, bo poza tablica,
d) odczytany wskaznik traktujemy jako adres bajtu w progmem, ktory
pobieramy
Quote:
dostaje nie dzialajacy kod
MOV R30,R28
CLR R31
f do R30,31
Quote:
LSL R30
ROL R31
elementy pol_znak sa dwubajtowe, wiec trzeba pomnozyc f przez 2
Quote:
SUBI R30,0xA0
SBCI R31,0xFF
Dziwne, ale to jest widac adres poczatkowy pol_znak
Quote:
LD R0,Z+
LDD R31,Z+0
MOV R30,R0
pobieramy z pamieci polznak[f] - dwa bajty, bo to wskaznik
Quote:
LDD R24,Z+0
MOV R30,R24
CLR R31
LPM
A to jest lekko dziwaczne - jakby kolejne posrednie adresowanie,
ty nie sklamales z tym lcd_port=pgm_read_byte(pol_znak[f]) ?
Quote:
natomiast dziala
lcd_port=pol_znak[f];
tyle ze kopiuje stringa do RAM.
Zaraz - jakim cudem to moze dzialac ?
Milosz - my naprawde dobrze radzimy - albo przeczytasz ze zrozumieniem
ksiazke, albo .. na marchewce tez sie mozna dorobic.
J.
Milosz Skowyra
Guest
Fri May 07, 2004 1:40 pm
"J.F." wrote:
Quote:
A potem bedziesz narzekal ze xptr+1 to nie jest rowne &x+1 ..
No dobrze, ale ja zrobie jak proponuje Jurek tzn. xptr=(char*) to znow
zgwalce kompilator ??
To nie jest gwalcenie, tylko jawna zmiana typu.
Jasne... sadzac z ksiazeczki nazywa sie to typecast

))
Quote:
Zakladamy ze programista wie co robi
W asm-ie wiem dokladnie do robie... w C ma to robic za mnie
kompilator... ale za malo piffa z nim wypilem

)) Ale sens powyzszego
jest jasny.
Quote:
Ale mi chodzilo o
lcd_port=polish_chars[f] ;
Dziala, tylko ze na starcie programu kopiuje cala tablice do RAM, a tego
wlasnie chce uniknac.
Quote:
To nie dziala (znaczy sie czyta smieci).
lcd_port=pgm_read_byte(polish_chars[f]);
I prawidlowo, bo co tu kazales?
Wyglada jakby z pamieci programu pobieral 1 bajtowy wskaznik do danej we
flashu. Hmmm dlaczego nie wiem.
IMHO - bo mu dokladnie wlasnie to kazales.
Jasne. Probu i wysylke przeprowadzilem w czasie kiedy rozsadek poszedl
na spacer. Dlatego takie wyniki. Teraz sam widze co powyprawialem ;-(((
Quote:
A to jest lekko dziwaczne - jakby kolejne posrednie adresowanie,
ty nie sklamales z tym lcd_port=pgm_read_byte(pol_znak[f]) ?
Nie ma szans, pisalem ze rozsadek mial wolne. Wszystko bylo Copy&Paste.
Quote:
natomiast dziala
lcd_port=pol_znak[f];
tyle ze kopiuje stringa do RAM.
Zaraz - jakim cudem to moze dzialac ?
Nie wiem, ale raczej zbieg okolicznosci

Pierwszy znak jest zle
definiowyany, potem ok.
Quote:
Milosz - my naprawde dobrze radzimy - albo przeczytasz ze zrozumieniem
ksiazke, albo .. na marchewce tez sie mozna dorobic.
No i wlasnie wrocilem z przebiegu po moim "ukochanym" miescie Opolu.
Bylem w 6 ksiegarniach i tak naprawde to nie ma co kupic. W jenej
znalazlem pozycje "C" Bjorna Stroustrupa, ale w skorze z odcisnietymi
literkami za jedyne 144 pln. Reszta to malo ciekawe dla mnie pozycje,
dotyczace najczesciej obiektowych wersji C, samouczki C, a nawet "C w 24
godziny". Co do ANSI C to nie znalazlem ani jednej pozycji. Z
ciekawostek byly 2 ksiazki typu 99 najczestszych bledow w C++, nawet
ciekawe. Ale jakies 80% porad dotyczylo wersji okienkowych. W koncu juz
w trzeciej bibliotece znalazlem "C" K&R, a dodatkowo pozyczylem z
sentymentu "Sam na sam z jezykiem C" Bieleckiego, opisujacy HiSoft C
na.... ZX

Zaczyna sie od slow LOAD ""
Na razie mam "C" K&R, Kieszkonkowy leksykon C i Borland C++. Mysle ze
wystarczy, a jak nie to kupie cos naprawde sensownego ale w interq

))
Dalsze pytania nie wykluczone... Jak bede we Wrocku to stawiam piffo.
Dzieki.
PS. Ksiazki ogrodnicze o uprawie marchewki byly wszedzie... za wyjatkiem
ksiegarni technicznej ;-)
--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek@fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|
Milosz Skowyra
Guest
Fri May 07, 2004 1:41 pm
"J.F." wrote:
Quote:
PS. Cos wspominales o przejsciu na uprawe marchewki.

))
Ale rada dobra - jak sie nie chce czytac podrecznika, to trzeba sie
czym innym zajac
Nie chcial Milosz nosic teczki to ponosi marcheweczki

))
--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek@fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|
J.F.
Guest
Fri May 07, 2004 3:55 pm
On Fri, 07 May 2004 16:40:04 +0200, Milosz Skowyra wrote:
Quote:
"J.F." wrote:
Ale mi chodzilo o
lcd_port=polish_chars[f] ;
Dziala, tylko ze na starcie programu kopiuje cala tablice do RAM, a tego
wlasnie chce uniknac.
Hm, moze przeceniam avrgcc, ale skoro zadeklarowales tablice w
progmem, to nie powinien tego robic.
Quote:
w trzeciej bibliotece znalazlem "C" K&R, a dodatkowo pozyczylem z
sentymentu "Sam na sam z jezykiem C" Bieleckiego, opisujacy HiSoft C
na.... ZX

Zaczyna sie od slow LOAD ""
Bielecki w C byl dobry. Co prawda specyficzny to autor i ksiazki mial
trudne, ale jak go zrozumiesz to i C zrozumiesz
Z tym ze wersja ZX moze byc bardzo uproszczona.
J.
Milosz Skowyra
Guest
Sat May 08, 2004 11:04 am
"J.F." wrote:
Quote:
Ale mi chodzilo o
lcd_port=polish_chars[f] ;
Dziala, tylko ze na starcie programu kopiuje cala tablice do RAM, a tego
wlasnie chce uniknac.
Hm, moze przeceniam avrgcc, ale skoro zadeklarowales tablice w
progmem, to nie powinien tego robic.
A kicha... nie dziala. Usiluje czytac z RAM-u ale wczesniej do niego nie
kopiuje stringa.
MOV R14,R21 //w r14-15 adres, poprawny bo napis w flash
leci od 0x0021
LDI R21,0x00
MOV R15,R21
ale samo czytanie odbywa sie z ramu.
MOV R31,R15
MOV R30,R14
LD R24,Z+
MOV R14,R30
MOV R15,R31
OUT 0x18,R24
Quote:
Bielecki w C byl dobry. Co prawda specyficzny to autor i ksiazki mial
trudne, ale jak go zrozumiesz to i C zrozumiesz
Z tym ze wersja ZX moze byc bardzo uproszczona.
Zgadza sie, pamietam ksiazki Bieleckiego z okresu ZX-a (bylem gdzies w
4-5 klasie podstawowki) i pozniejsze z pecetologii. Ciezki do czytania i
rozumienia, ale za to trzeba mu przyznac ze wiedze posiadal spora.
--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek@fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|
Jurek Szczesiul
Guest
Sat May 08, 2004 2:25 pm
Sat, 08 May 2004 14:04:01 +0200, na pl.misc.elektronika, Milosz Skowyra
napisał(a):
Quote:
A kicha... nie dziala. Usiluje czytac z RAM-u ale wczesniej do niego nie
kopiuje stringa.
MOV R14,R21 //w r14-15 adres, poprawny bo napis w flash
leci od 0x0021
LDI R21,0x00
MOV R15,R21
ale samo czytanie odbywa sie z ramu.
MOV R31,R15
MOV R30,R14
LD R24,Z+
MOV R14,R30
MOV R15,R31
OUT 0x18,R24
To juz nie wiem jak robisz. Taki tu prosty przyklad różnych składni:
const char Tx1[] PROGMEM = "One";
.....................
i=1;
x=pgm_read_byte(Tx1);
x=pgm_read_byte(&Tx1[i]);
i=2;
x=pgm_read_byte(Tx1 + i);
generuje :
i=1;
180: 81 e0 ldi r24, 0x01 ; 1
182: 90 e0 ldi r25, 0x00 ; 0
184: 90 93 70 00 sts 0x0070, r25
188: 80 93 6f 00 sts 0x006F, r24
x=pgm_read_byte(Tx1);
18c: e6 e9 ldi r30, 0x96 ; 150
18e: f0 e0 ldi r31, 0x00 ; 0
190: 84 91 lpm r24, Z
192: 80 93 6c 00 sts 0x006C, r24
x=pgm_read_byte(&Tx1[i]);
196: 31 96 adiw r30, 0x01 ; 1
198: 84 91 lpm r24, Z
19a: 80 93 6c 00 sts 0x006C, r24
i=2;
19e: 82 e0 ldi r24, 0x02 ; 2
1a0: 90 e0 ldi r25, 0x00 ; 0
1a2: 90 93 70 00 sts 0x0070, r25
1a6: 80 93 6f 00 sts 0x006F, r24
x=pgm_read_byte(Tx1 + i);
1aa: 31 96 adiw r30, 0x01 ; 1
1ac: 84 91 lpm r24, Z
1ae: 80 93 6c 00 sts 0x006C, r24
--
Pozdrowienia
Jurek Szczesiul
Milosz Skowyra
Guest
Sat May 08, 2004 3:04 pm
Jurek Szczesiul wrote:
Quote:
To juz nie wiem jak robisz. Taki tu prosty przyklad różnych składni:
const char Tx1[] PROGMEM = "One";
i=1;
x=pgm_read_byte(Tx1);
x=pgm_read_byte(&Tx1[i]);
i=2;
x=pgm_read_byte(Tx1 + i);
Przeciez Jarek ewidentnie pytal czy dziala sekwencja.
Quote:
Ale mi chodzilo o
lcd_port=polish_chars[f] ;
Specjalnie zostawilem cytat ktory wyciales. Przeczytaj ze dwa posty
wyzej.
Mozesz zreszta pokazac co da w Twoim przypadki x=Tx1[i];
--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek@fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|
Jurek Szczesiul
Guest
Sat May 08, 2004 3:22 pm
Sat, 08 May 2004 18:04:32 +0200, na pl.misc.elektronika, Milosz Skowyra
napisał(a):
Quote:
Przeciez Jarek ewidentnie pytal czy dziala sekwencja.
Specjalnie zostawilem cytat ktory wyciales. Przeczytaj ze dwa posty
wyzej.
OK, OK
Watek sie cokolwiek pokomplikowal.
Quote:
Mozesz zreszta pokazac co da w Twoim przypadki x=Tx1[i];
Zoptymalizowalo :
x=Tx1[i];
178: 80 91 97 00 lds r24, 0x0097
17c: 80 93 6c 00 sts 0x006C, r24
--
Pozdrowienia
Jurek Szczesiul
J.F.
Guest
Sat May 08, 2004 3:36 pm
On Sat, 8 May 2004 17:25:03 +0200, Jurek Szczesiul wrote:
Quote:
To juz nie wiem jak robisz. Taki tu prosty przyklad różnych składni:
const char Tx1[] PROGMEM = "One";
....................
i=1;
x=pgm_read_byte(Tx1);
x=pgm_read_byte(&Tx1[i]);
i=2;
x=pgm_read_byte(Tx1 + i);
generuje :
Wow - popatrzcie jak optymalizator ladnie sledzi jakie stale wpisujemy
do i
Quote:
i=1;
180: 81 e0 ldi r24, 0x01 ; 1
182: 90 e0 ldi r25, 0x00 ; 0
184: 90 93 70 00 sts 0x0070, r25
188: 80 93 6f 00 sts 0x006F, r24
x=pgm_read_byte(Tx1);
18c: e6 e9 ldi r30, 0x96 ; 150
18e: f0 e0 ldi r31, 0x00 ; 0
190: 84 91 lpm r24, Z
192: 80 93 6c 00 sts 0x006C, r24
x=pgm_read_byte(&Tx1[i]);
196: 31 96 adiw r30, 0x01 ; 1
198: 84 91 lpm r24, Z
19a: 80 93 6c 00 sts 0x006C, r24
i=2;
19e: 82 e0 ldi r24, 0x02 ; 2
1a0: 90 e0 ldi r25, 0x00 ; 0
1a2: 90 93 70 00 sts 0x0070, r25
1a6: 80 93 6f 00 sts 0x006F, r24
x=pgm_read_byte(Tx1 + i);
1aa: 31 96 adiw r30, 0x01 ; 1
1ac: 84 91 lpm r24, Z
1ae: 80 93 6c 00 sts 0x006C, r24
Milosz Skowyra
Guest
Sat May 08, 2004 5:23 pm
"J.F." wrote:
Quote:
const char Tx1[] PROGMEM = "One";
Wow - popatrzcie jak optymalizator ladnie sledzi jakie stale wpisujemy
do i
Zauwaz rowniez ze wypromowal chara do inta.
--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek@fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|
Milosz Skowyra
Guest
Sat May 08, 2004 5:28 pm
Jurek Szczesiul wrote:
Quote:
Mozesz zreszta pokazac co da w Twoim przypadki x=Tx1[i];
Zoptymalizowalo :
x=Tx1[i];
178: 80 91 97 00 lds r24, 0x0097
17c: 80 93 6c 00 sts 0x006C, r24
Niby tak, tylko ze zoptymalizowalo pod katem odczytu z ramu, a to co
potrzebujemy lezy w romie. O tym rozmawialismy z J.F. IMHO GCC traktuje
wszystko, jak dane umieszczone w pamieci ram, nie patrzac na definicje
obszaru w ktorym zmienna zostala zadeklarowana. Tylko specyficzne
komendy odwoluja sie za pomoca LPM, SPM czy ELPM.
--
Regards. Przy odpowiedzi usun "." przed "net" z adresu!!!
|-----------------------------------------------------|
| Milosz Skowyra GSM Mobile +48 600 95 35 72 |
| miloszek@fido.net.org.pl 2:484/2.47 on fidonet |
|-----------------------------------------------------|
Jurek Szczesiul
Guest
Sat May 08, 2004 7:00 pm
Sat, 08 May 2004 20:28:16 +0200, na pl.misc.elektronika, Milosz Skowyra
napisał(a):
Quote:
Mozesz zreszta pokazac co da w Twoim przypadki x=Tx1[i];
Zoptymalizowalo :
x=Tx1[i];
178: 80 91 97 00 lds r24, 0x0097
17c: 80 93 6c 00 sts 0x006C, r24
Niby tak, tylko ze zoptymalizowalo pod katem odczytu z ramu, a to co
potrzebujemy lezy w romie. O tym rozmawialismy z J.F. IMHO GCC traktuje
wszystko, jak dane umieszczone w pamieci ram, nie patrzac na definicje
obszaru w ktorym zmienna zostala zadeklarowana. Tylko specyficzne
komendy odwoluja sie za pomoca LPM, SPM czy ELPM.
O, teraz wlasnie jest poruszone sedno sprawy. Wlasnie tak jest, bo gcc
pochodzi ze swiata ciaglej pamieci, gdzie nie ma pod takimi samymi adresami
ramu, flasha i eepromu. Wskaznik jest 2-bajtowy i nie ma w nim miejsca na
okreslenie, o ktora pamiec chodzi ( np. w prostym kompilatorku dla 51
mialem wskazniki 3-bajtowe - i tam wszystkie odwolania przebiegaly
tradycyjnie - 3. bajt jednoznacznie okreslal typ pamieci ). Wiec zrobiono
za pomoca makr i funkcji. Chociaz ostatnio coraz czesciej na liscie avr-gcc
pojawiaja sie rozwazania, ze chyba wypadaloby cos z tym w koncu zrobic :-)
--
Pozdrowienia
Jurek Szczesiul
J.F.
Guest
Sat May 08, 2004 10:31 pm
On Sat, 8 May 2004 22:00:04 +0200, Jurek Szczesiul wrote:
Quote:
Niby tak, tylko ze zoptymalizowalo pod katem odczytu z ramu, a to co
potrzebujemy lezy w romie. O tym rozmawialismy z J.F. IMHO GCC traktuje
wszystko, jak dane umieszczone w pamieci ram, nie patrzac na definicje
obszaru w ktorym zmienna zostala zadeklarowana. Tylko specyficzne
komendy odwoluja sie za pomoca LPM, SPM czy ELPM.
O, teraz wlasnie jest poruszone sedno sprawy. Wlasnie tak jest, bo gcc
pochodzi ze swiata ciaglej pamieci, gdzie nie ma pod takimi samymi adresami
ramu, flasha i eepromu. Wskaznik jest 2-bajtowy i nie ma w nim miejsca na
okreslenie, o ktora pamiec chodzi
Ale w tym przypadku mamy konkretna tablice, w ktorejs jakos sie
znalazlo miejsce na atrybut "progmem". Printf czy inna funkcja
mialby problemy z okresleniem o ktora pamiec chodzi po wskazniku - ale
tablica[i] kompilator moglby prawidlowo skompilowac, bo wie gdzie
sie ta tablica miesci.
Quote:
np. w prostym kompilatorku dla 51
mialem wskazniki 3-bajtowe - i tam wszystkie odwolania przebiegaly
tradycyjnie - 3. bajt jednoznacznie okreslal typ pamieci ). Wiec zrobiono
za pomoca makr i funkcji. Chociaz ostatnio coraz czesciej na liscie avr-gcc
pojawiaja sie rozwazania, ze chyba wypadaloby cos z tym w koncu zrobic
tak ... zmienic procka

Bo ten zawsze bedzie sprawial takie
klopoty.
J.
Krzysztof Rudnik
Guest
Sun May 09, 2004 8:09 am
J.F. wrote:
Quote:
On Sat, 8 May 2004 22:00:04 +0200, Jurek Szczesiul wrote:
Niby tak, tylko ze zoptymalizowalo pod katem odczytu z ramu, a to co
potrzebujemy lezy w romie. O tym rozmawialismy z J.F. IMHO GCC traktuje
wszystko, jak dane umieszczone w pamieci ram, nie patrzac na definicje
obszaru w ktorym zmienna zostala zadeklarowana. Tylko specyficzne
komendy odwoluja sie za pomoca LPM, SPM czy ELPM.
O, teraz wlasnie jest poruszone sedno sprawy. Wlasnie tak jest, bo gcc
pochodzi ze swiata ciaglej pamieci, gdzie nie ma pod takimi samymi
adresami ramu, flasha i eepromu. Wskaznik jest 2-bajtowy i nie ma w nim
miejsca na okreslenie, o ktora pamiec chodzi
Ale w tym przypadku mamy konkretna tablice, w ktorejs jakos sie
znalazlo miejsce na atrybut "progmem". Printf czy inna funkcja
mialby problemy z okresleniem o ktora pamiec chodzi po wskazniku - ale
tablica[i] kompilator moglby prawidlowo skompilowac, bo wie gdzie
sie ta tablica miesci.
Mozna by to obejsc gdyby narzucic dodatkowy warunek na zgodnosc typow -
atrybut wskaznika jest integralna czescia typu i wskazniki na rozne
typu pamieci sa niekompatybilne. Wtedy w naglowku funkcji moznaby
okreslic jakiego wskaznika oczekuje.
Quote:
np. w prostym kompilatorku dla 51
mialem wskazniki 3-bajtowe - i tam wszystkie odwolania przebiegaly
tradycyjnie - 3. bajt jednoznacznie okreslal typ pamieci ). Wiec zrobiono
za pomoca makr i funkcji. Chociaz ostatnio coraz czesciej na liscie
avr-gcc pojawiaja sie rozwazania, ze chyba wypadaloby cos z tym w koncu
zrobic :-)
tak ... zmienic procka

Bo ten zawsze bedzie sprawial takie
klopoty.
To jest zdaje tzw architektura Harward (nie chce mi sie teraz
wyciagac mojej starej pracy dyplomowej o TMS320),
Krzysiek Rudnik
Jurek Szczesiul
Guest
Sun May 09, 2004 8:59 am
Sun, 09 May 2004 01:31:17 +0200, na pl.misc.elektronika, J.F. napisał(a):
Quote:
Ale w tym przypadku mamy konkretna tablice, w ktorejs jakos sie
znalazlo miejsce na atrybut "progmem". Printf czy inna funkcja
mialby problemy z okresleniem o ktora pamiec chodzi po wskazniku - ale
tablica[i] kompilator moglby prawidlowo skompilowac, bo wie gdzie
sie ta tablica miesci.
W zasadzie tak - ja zbyt gleboko tego nie znam, tylko temat czesto wraca na
grupach avrfreaks i tak mniej wiecej 'wiedzacy' wyjasniaja : rozdzielone
obszary sa dla gcc klopotem i zastosowano rozne protezy zeby to obejsc -
wyszlo akurat tak jak jest ( wyglada, ze atrybut obszaru jest raczej
informacja dla binutilsow avr a sam kompilator skorzystac z tego nie umie )
Quote:
tak ... zmienic procka

Bo ten zawsze bedzie sprawial takie
klopoty.

Wiec raczej moze kompilator, ile to IAR kosztuje ? ;-)
BTW - jakos IMHO nie pasuje roszczenie zbytnich pretensji do narzedzia GNU
- zawsze odpowiadaja, ze jak cos nie tak to ochotnicy mile widziani :-)
--
Pozdrowienia
Jurek Szczesiul
Goto page Previous 1, 2, 3, 4, 5, 6, 7 Next