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