Arduino a alokace mista pro promenne

Jan Waclawek konfera na efton.sk
Čtvrtek Říjen 24 16:55:17 CEST 2019


>Nevím jak u AVR, ale u 8051 používáme už dávno prostor Data (8 bitové 
>adresování) a Xdata (16 bit adresování). Trochu to Silabs zamotal s tím, 
>když původní prostor Data, kde bylo jen 128 bajtů (v horních 128 jsou 
>SFR) rozšířil na 256. Pokud do těch horních 128 přistupuju přímým 
>adresováním, ovládám SFR (a to je u některých procesorů stránkované, aby 
>se to vešlo) a pokud to adresuju nepřímým adresováním (přes pointery), 
>mám přístup datům.

To nema nic spolocne s Cygnalom/Silabsom, to je klasicka 8052 (t.j.
"rozsirena" '51).

'51 (v tomto duchu) ma asi 5 alebo 6 adresovych priestorov - priamy,
nepriamy, bitovy, externa data oblast 8-bitovo, externe datova oblast
16-bitovo, programova oblast. '51 prekladace to 

Delit architektury striktne na vonNeumannovske a Harvardovske je cca od
roku 1960 zbytocne - moze to byt spomenute ako historicka perla, ale potom
treba hovorit o tom, ze veci su daleko, daleko zlozitejsie nez takto
cierne a biele (moj syn je v prvaku na elektro priemyslovke a toto bola
prva vec na ktoru robil referat; musel som sa velmi premahat aby som mu
nepovedal to, ako to je, lebo to by mu nijako nepomohlo). Pri ziadnej
architekture nie je problem si vymysliet dalsie adresove priestory, napr.
u Z80 je sice pravda, ze je tazke oddelit programovu pamat od datovej, ale
mozem externym hardware do toho jedneho adresoveho priestoru nastrankovat
niekolko diametralne odlisnych pamati, z coho niektore budu mat charakter
programovej a ine charakter datovej s odlisnym sposobom pristupu(a aj sa
to roznymi trikmi robilo); alebo trebars aj bezna I2C eeprom moze pokojne
byt chapana ako samostatny adresovy priestor. Zmysel dorobit to do jazyka
by malo, vyzaduje si to vsak rozmyslanie na strane uzivatela, co
samozrejme je obrovsky problem. Na druhej strane, pri ziadnej architekture
nie je problem vymysliet sposob interpretacie adresovych priestorov tak,
aby bol z pohladu programatora "unifikovany" ci "linearizovany"; je to
vsak za cenu velmi vyrazneho znizenia efektivity.

avr-gcc aj sdcc oba pristupy dovoluju, lebo maju implementovane aj
samostatne adresne priestory aj unifikovany smernik - zrejme vsak nie su
implementovane vsetky ocakavane kniznice pre unifikovane smerniky, napr.
printf s unifikovanym smernikom asi nefunguje ani u jedneho (mozem sa
mylit lebo to uz asi 10 rokov nesledujem). Neviem ako je to u Keil'51.

wek





Další informace o konferenci Hw-list