dotaz na pointer

Josef Štengl ok1ced na nagano.cz
Úterý Listopad 18 23:35:22 CET 2014


Hmm. A co to udělá, když napíšete bezpečnostně korektní verzi?
to jest

Kortepl[i]=Pread[i];

Hmm. To jsem už zapomněl syntaxi pro C51, nebo je řádek
int xdata *data Pread=0x1F00;
opravdu divný? Buď by za *data musela být čárka, ale pak by Pread nebyl pointer nebo je to jinak?
Podle mě by to ani nemělo jít přeložit. Ale už jsem se spletl vícekrát ...

Ten
  while(i-4);
se mi líbí! Je takový ... něžně zvrácený :-D


ced


Dne 18.11.2014 v 22:52 Vláďa Anděl napsal(a):
> Dobrý večer,
>
> poprvé se snažím něco dělat v 8051 (Silabs) s pointrem a asi jsem to chybně zapsal, nevím co s tím. Program jsem krokoval,
> díval jsem se co to dělá v asm a vypadá to že se přepíše návratová adresa, na konci funkce to skáče na adresu 0000.
>
> U tohoto procesoru C8051F531 je posledních 512 bajtů code paměti přístupných jako XDATA (jako EEPROM pro konstanty) a má
> to být přístupné přes pointer. Může mi někdo poradit co tam dělám špatně?
>
> void Ctenikonst(void)
> {
> byte i;
>
> int xdata *data Pread=0x1F00;    // initialize FLASH write pointer od 1F00
>                                                         // tady se správně do R6, R7 vložila adresa 1F00
> i=1;
> do
>    {
>    Kortepl[i]=*(Pread+i);              // tady překladač dělá nějakou hrůzu, vypsal jsem si to a je to na celou stránku
>                                                        // moc to nechápu a je tam i MUL AB. Tak jestli to místo pointeru
> nepochopilo
>                                                        // jako násobení. Taky to zmrší návratovou adresu a skáče to na
> 0000. Má to
>                                                        // zapsat do Kortepl[i] obsah z té adresy 1F00+i
>    i++;
>    }
> while(i-4);
> }
>
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
>


Další informace o konferenci Hw-list