C while for..for....for

Vláďa Anděl vaelektronik na vaelektronik.cz
Neděle Leden 29 19:52:57 CET 2023


Tak tohle je už hodně starý program, používal jsem tehdy ještě přehladač 
Keil pod DOSem. Tam jsem se vždycky díval na .lst soubor, kde to bylo 
přeložené do assembleru. Překládalo to dobře, stejně jako kdybych to 
napsal v asm. Ten překladač ještě neuměl optimalizovat (nebo aspoň o tom 
nevím) a pokud měl pracovat s polem, přesto že jsem to měl v pamětovém 
prostoru data, který byl adresovaný osmibitově, vymyslel si k tomu 
nějakou tříbajtovou adresu, kde v jednom bajtu bylo rozlišení, který 
paměťový prostor to je. No hrůha. Když mi šlo o místo v paměti, nebo o 
rychlost, přepisoval jsem tyhle funkce do asm. Mimo to jsem psal v asm 
to, co mělo mít přesné časování a musel jsem počítat strojové cykly.

Když jsem pak přešel na Silabs IDE, všechno bylo jinak. Nemělo smysl 
psát cokoliv v asm, protože procesor má pipeline, tedy načítá instrukce 
dopředu a délka některých je různá podle toho, kterou větví program jde. 
Mimo to to vlastně ani nešlo, protože vývojový systém to ani 
neumožňoval. Na silabsáckém fóru se to hodně řešilo, ale nevyřešilo. 
Vlastně asm už ani není potřeba, protože časovače umí krokovat po jedné 
periodě oscilátoru. Když se podívám do .lst, mám tam číslované řádky, 
úroveň vnoření, ale není tam překlad do asm. Na něj se mohu podívat jen 
při krokování programu. Holt pokrok...

Anděl


Dne 29.1.2023 v 17:48 Michal Gregor napsal(a):
>  Znak1='*'; goto Stisk; }
> Lze nahradit return "*";
>
>
> Neni spatne se podivat i na vysledny preklad.
> Kompreosvany radek s X prikazy dela problem dost casto i prekladaci.
>
> Michal Gregor
>
>
>
> Dne 27.01.2023 v 0:06 Aleš Procháska napsal(a):
>> Jasně, tohle je podle mě krásný příklad, kdy je jedno pořádné goto 
>> strukturovanější než ten teoreticky nejčistší kód podle 
>> Dijkstry-Wirtha :-)
>> Aleš Procháska
>>
>>> Adr0=0; Zpozkl();  if(!Outkl)   { Znak1='*'; goto Stisk; }
>>> Adr0=1; Zpozkl();  if(!Outkl)   { Znak1='7'; goto Stisk; }
>>> Adr1=1; Zpozkl();  if(!Outkl)   { Znak1='1'; goto Stisk; }
>>> Adr0=0; Zpozkl();  if(!Outkl)   { Znak1='4'; goto Stisk; }
>>> Adr2=1; Zpozkl();  if(!Outkl)   { Znak1='9'; goto Stisk; }
>>> Adr1=0; Zpozkl();  if(!Outkl)   { Znak1='8'; goto Stisk; }
>>> Adr0=1; Zpozkl();  if(!Outkl)   { Znak1='2'; goto Stisk; }
>>> Adr1=1; Zpozkl();  if(!Outkl)   { Znak1='3'; goto Stisk; }
>>> Adr3=1; Adr2=0; Zpozkl();  if(!Outkl)   { Znak1='0'; goto Stisk; }
>>> Adr0=0; Zpozkl();  if(!Outkl)   { Znak1='5'; goto Stisk; }
>>> Adr1=0; Zpozkl();  if(!Outkl)   { Znak1='6'; goto Stisk; }
>>> Adr0=1; Zpozkl();  if(!Outkl)   { Znak1='#'; goto Stisk; }
>>>
>>> Anděl
>> _______________________________________________
>> 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