Goto page Previous 1, 2, 3, 4, 5, 6, 7 Next
Milosz Skowyra
Guest
Sun May 09, 2004 9:10 am
"J.F." wrote:
Quote:
tak ... zmienic procka

Bo ten zawsze bedzie sprawial takie
klopoty.
Tez wyjscie... a co bys polecal ? Irek promuje H8 Renesansa, ponoc
bardzo przyjemne. Jeszcze sie osobiscie nie przygladalem. Pod wzgledem
obudowania peryferiami atrakcyjny moze byc Cypres z rdzeniem '51 i FPGA,
ale raczej w Polsce malo dostepny.
Swoja droga to moze ktos by sprawdzil jak sie ma kompilacja podobnej
sytacji w innym srodowisku C, np IAR-a czy CodeVision ??
--
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 |
|-----------------------------------------------------|
Piotr Wyderski
Guest
Sun May 09, 2004 10:16 am
Krzysztof Rudnik wrote:
Quote:
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.
Jak to sobie konkretnie wyobrazasz? Tj. czym rozni sie
const char* p; wskazujace na dane w RAM od
const char* p; wskazujace na dane w ROM?
Mozna oczywiscie dodac do jezyka nowe specyfikatory rodzaju
wskazywanej pamieci i zabronic konwersji miedzy nimi, ale to juz
nie bedzie C. :-)
Quote:
To jest zdaje tzw architektura Harward
Zgadza sie, pamieci danych i programu sa fizycznie rozdzielone.
Pozdrawiam
Piotr Wyderski
Zbych
Guest
Sun May 09, 2004 10:37 am
Pewnego dnia Piotr Wyderski przemówił ludzkim głosem:
Quote:
const char* p; wskazujace na dane w RAM od
^^^^^^^ to bym wywalił
Quote:
const char* p; wskazujace na dane w ROM?
^^^^^^^^ a tu aż się prosi o umieszczenie w romie
Quote:
Mozna oczywiscie dodac do jezyka nowe specyfikatory rodzaju
wskazywanej pamieci i zabronic konwersji miedzy nimi, ale to juz
nie bedzie C.
Ale czy ktoś się upiera, że to musi być klasyczne C ? To ma być wygodne
narzędzie. Jeśli norma nie uwzględnia małego otworu na końcu młotka do
powieszenia go na gwoździu, to nie znaczy, że ktoś nie może tego zrobić,
a już nie daj boże sprzedawać pod nazwą "ansi/iso młotek" (pod
warunkiem, że to rozszerzenie da się wyłączyć).
--
*Warning*: Dates in Calendar are closer than they appear.
### /mail: bzb<at>poczta<dot>onet<dot>pl/ ###
Piotr Wyderski
Guest
Sun May 09, 2004 11:01 am
Zbych wrote:
Quote:
Ale czy ktoś się upiera, że to musi być klasyczne C ?
Nikt sie nie upiera, nawet wprost przeciwnie; ja tylko
informuje, ze po takich modyfikacjach to juz nie bedzie C. :-)
Pozdrawiam
Piotr Wyderski
Piotr Wyderski
Guest
Sun May 09, 2004 11:05 am
Zbych wrote:
Zapomnialem o tym:
Quote:
const char* p; wskazujace na dane w RAM od
^^^^^^^ to bym wywalił
A to dlaczego? Co zabrania miec w pamieci RAM
dane, ktore w danym kontekscie nie sa zapisywalne
(co nie oznacza, ze nie sa zapisywalne w ogole)?
Quote:
const char* p; wskazujace na dane w ROM?
^^^^^^^^ a tu aż się prosi o umieszczenie w romie
Ale skad kompilator ma o tym wiedziec? OK, jesli const
odnosi sie do globalnej definicji danej, to kompilator moze
to wywnioskowac, ale co z automatycznymi obiektami
z atrybutem const? :-)
Pozdrawiam
Piotr Wyderski
Zbych
Guest
Sun May 09, 2004 11:40 am
Pewnego dnia Piotr Wyderski przemówił ludzkim głosem:
Quote:
A to dlaczego? Co zabrania miec w pamieci RAM
dane, ktore w danym kontekscie nie sa zapisywalne
(co nie oznacza, ze nie sa zapisywalne w ogole)?
Dla mnie jeśli coś jest stałe to jest stałe i już.
(co nie znaczy, że twórcy c myśleli podobnie).
Quote:
ale co z automatycznymi obiektami
z atrybutem const?
A co to są automatyczne obiekty (w kontekście klasycznego c) ?
--
*Warning*: Dates in Calendar are closer than they appear.
### /mail: bzb<at>poczta<dot>onet<dot>pl/ ###
Jurek Szczesiul
Guest
Sun May 09, 2004 11:52 am
Sun, 9 May 2004 13:16:23 +0200, na pl.misc.elektronika, Piotr Wyderski
napisał(a):
Quote:
Mozna oczywiscie dodac do jezyka nowe specyfikatory rodzaju
wskazywanej pamieci i zabronic konwersji miedzy nimi, ale to juz
nie bedzie C. :-)
I tak to jest wlasnie zrobione dla '51 - dodatkowo dla zmiennych (stalych)
okresla sie zadany obszar ( np. code, data, idata, xdata ) - potem
kompilator juz 'sam wie' jak poszczegolne zmienne obslugiwac.
--
Pozdrowienia
Jurek Szczesiul
Jurek Szczesiul
Guest
Sun May 09, 2004 11:59 am
Sun, 09 May 2004 14:40:01 +0200, na pl.misc.elektronika, Zbych napisał(a):
Quote:
Dla mnie jeśli coś jest stałe to jest stałe i już.
(co nie znaczy, że twórcy c myśleli podobnie).
IMHO oni chyba w ogole nie przewidywali takich
problemow - w pecetowym programie i tak de facto
wszystko jest w ramie - nie masz stalych, ktore
trzeba przy odwolaniu sciagac pojedynczo z dysku ;-)
--
Pozdrowienia
Jurek Szczesiul
Zbych
Guest
Sun May 09, 2004 12:09 pm
Pewnego dnia Jurek Szczesiul przemówił ludzkim głosem:
Quote:
IMHO oni chyba w ogole nie przewidywali takich
problemow - w pecetowym programie i tak de facto
wszystko jest w ramie - nie masz stalych, ktore
trzeba przy odwolaniu sciagac pojedynczo z dysku
Chwila, przecież c to lata 60 (70 ?) i maszyny unixowe (PDP ?), które
już miały ochronę pamięci. Więc jeśli coś jest umieszczone w segmencie
kod (a nie danych) to nie powinno się tego dać zmodyfikować z poziomu
programu.
--
*Warning*: Dates in Calendar are closer than they appear.
### /mail: bzb<at>poczta<dot>onet<dot>pl/ ###
Piotr Wyderski
Guest
Sun May 09, 2004 1:04 pm
Zbych wrote:
Quote:
Dla mnie jeśli coś jest stałe to jest stałe i już.
(co nie znaczy, że twórcy c myśleli podobnie).
Ale w C slowo kluczowe "const" nie znaczy "stale", tylko "nie
moze wystapic jako l-wartosc w danym kontekscie"
Coz, to nie nasza wina, ze w C slowa kluczowe niezbyt
odpowiadaja swoim znaczeniom... Porzadniejsze jezyki
maja do tego slowa kluczowe "in" oraz "out", ktore
oznaczaja odpowiednio "tylko do odczytu" i "tylko do
zapisu", a "const" deklaruje prawdziwe stale, zazwyczaj
nie zajmujace ani bajta pamieci (cos jak #define, ale
z pelna kontrola typow). Sprawa "const" w C i C++ jest
bardzo sliska, szczegolnie po dodaniu atrybutu "mutable",
co daje obiekty "czesciowo stale". :->
Quote:
A co to są automatyczne obiekty (w kontekście klasycznego c) ?
Obiekty umieszczane przez kompilator na stosie.
Pozdrawiam
Piotr Wyderski
Piotr Wyderski
Guest
Sun May 09, 2004 1:12 pm
Jurek Szczesiul wrote:
Quote:
I tak to jest wlasnie zrobione dla '51 - dodatkowo dla zmiennych (stalych)
okresla sie zadany obszar ( np. code, data, idata, xdata )
A w jaki sposob to konkretnie wyglada? Wprowadzili nowe slowa
kluczowe do jezyka, czy tez korzystaja z __attribute__((...))?
Pozdrawiam
Piotr Wyderski
Jurek Szczesiul
Guest
Sun May 09, 2004 1:27 pm
Sun, 09 May 2004 15:09:38 +0200, na pl.misc.elektronika, Zbych napisał(a):
Quote:
Pewnego dnia Jurek Szczesiul przemówił ludzkim głosem:
Hau

Quote:
Chwila, przecież c to lata 60 (70 ?) i maszyny unixowe (PDP ?), które
już miały ochronę pamięci. Więc jeśli coś jest umieszczone w segmencie
kod (a nie danych) to nie powinno się tego dać zmodyfikować z poziomu
programu.
Fakt - i const wlasnie to okresla. Ale segment tak czy siak w ramie. A tu
oddzielny obszar z powielonymi adresami i zupelnie inna maszynowa
obsluga dostepu (a stale moga byc przeciez rowniez w eeprom ).
Wiec sam const przestaje wystarczac - pozostala z niego tylko funkcja
wykrywania bledu przy omylkowej probie zapisu.
--
Pozdrowienia
Jurek Szczesiul
Jurek Szczesiul
Guest
Sun May 09, 2004 1:43 pm
Sun, 9 May 2004 16:12:01 +0200, na pl.misc.elektronika, Piotr Wyderski
napisał(a):
Quote:
I tak to jest wlasnie zrobione dla '51 - dodatkowo dla zmiennych (stalych)
okresla sie zadany obszar ( np. code, data, idata, xdata )
A w jaki sposob to konkretnie wyglada? Wprowadzili nowe slowa
kluczowe do jezyka, czy tez korzystaja z __attribute__((...))?
W tych, ktore ogladalem byly to slowa kluczowe
( zreszta jest to nazwane jednoznacznie, np. w opisach SDCC jako
'mcs51 storage class language extensions' ).
--
Pozdrowienia
Jurek Szczesiul
Krzysztof Rudnik
Guest
Sun May 09, 2004 1:50 pm
Piotr Wyderski wrote:
Quote:
Krzysztof Rudnik wrote:
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.
Jak to sobie konkretnie wyobrazasz? Tj. czym rozni sie
const char* p; wskazujace na dane w RAM od
const char* p; wskazujace na dane w ROM?
Dodanie __attribute__ juz wykracza poza C.
Krzysiek Rudnik
J.F.
Guest
Sun May 09, 2004 7:53 pm
On Sun, 9 May 2004 13:16:23 +0200, Piotr Wyderski wrote:
Quote:
Krzysztof Rudnik wrote:
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.
Jak to sobie konkretnie wyobrazasz? Tj. czym rozni sie
const char* p; wskazujace na dane w RAM od
const char* p; wskazujace na dane w ROM?
mozna zrobic tak jak zrobiono:
prog_char: char __attribute__((progmem))
PGM_P : prog_char const*
Kompilator sie zorientuje ... ale jak zmusic printf i inne funkcje
zeby sie po adresie orientowaly ?
Niby mozna tak jak kolega tu proponowal - wskazniki 3 bajtowe,
pierwszy wskazuje obszar ... tylko ze wtedy zegnaj wydajnosc :-(
Quote:
To jest zdaje tzw architektura Harward
Zgadza sie, pamieci danych i programu sa fizycznie rozdzielone.
Co nie zabrania istnienia jednolitej adresacji. Np
najstarszy bit adresu wybiera czy dana czytamy z ram czy z rom.
Tylko jak to zrobic jesli niektorzy chca 64KB ram, 256KB ROM
i oszczedne 16-bitowe wskazniki.
Ech, to gdzie dostac ARMa w przyzwoitej cenie, detalicznej ilosci i
obudowie nie BGA ?
J.
Goto page Previous 1, 2, 3, 4, 5, 6, 7 Next