c: hi-tech 9,80, interrupt asm

Tomáš Hamouz hamouz na divesoft.cz
Čtvrtek Duben 3 10:08:08 CEST 2014


Což o to, mě by se také líbila a očekával bych ji.
Vidím problém v tom že aby mohl kompilátor rozhodnout o použitých
registrech, musí napřed proběhnout kompletní optimalizace.

Poté by se musela volající procedura znovu přeložit. Asi by se
nemusela překládat úplně od začátku, kdyby měl překladač k dispozici
kód před optimalizací, případně považovat úklid registrů za speciální
kód, na který se smí sáhnout i po překladu.

První varianta by znamenala udržovat všechno v rozpracovaném stavu s
úklidem na konci celého překladu (nevíte do poslední chvíle co budete
překládat znova), druhá by znamenala přidání nového mechanizmu, který
tam není a je dost nesystematický.

Docela chápu autory že se na takovéhle komplikace vykašlali. Pokud
chcete optimální kód, musíte zajistit aby při překladu kompiler věděl
vše potřebné, jinak se smiřte s tím že volí jistotu.

Tomáš

> Tak trochu jsem tuto optimalizaci očekával. Ale zase na druhé straně, třeba
> si to autoři schovávají do další vezre.

> -----Original Message-----
> From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Tomáš Hamouz
> Sent: Thursday, April 03, 2014 9:31 AM
> To: HW-news
> Subject: Re: c: hi-tech 9,80, interrupt asm

> Jestli po tom kompilátoru nechcete moc.

> Pokud by se měl chovat tak jak píšete, tak by musel kompilovat dvakrát,
> poprvé když narazí na danou funkci a podruhé, když už ví jaké další funkce
> volá. Protože ve vašem případě v okamžiku kompilace o volané funkci nic
> neví, počítá s nejhorší variantou.

> Linker jen doplní adresy externích objektů, ale do vlastního kódu funkce už
> nezasahuje.

> Tomáš


>> To je logická domněnka, Já myslel, že si to nejdřív všechno připraví a 
>> pak to slinkuje dohromady. V té přípravě jsem předpokládal, že si 
>> právě osahá všechny funkce. Pravdou je, pokud se podívám na "profi" 
>> programy od Microchipu, tak veškeré podprogramy jsou na začátku a 
>> samotná hlavní procedura, která volá podprogramy je vždy na konci. 
>> Takže asi tohle bude důvod. Díky!!!

>> -----Original Message-----
>> From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of David 
>> Obdrzalek
>> Sent: Thursday, April 03, 2014 8:35 AM
>> To: HW-news
>> Subject: Re: c: hi-tech 9,80, interrupt asm

>> On 2 Apr 2014 at 23:34, Miroslav Draxal wrote:

>>> Dobrý den, tak nakonec to dopadlo, ale nejsem s toho moudrý.
>>> 
>> ...

>>> Ovšem po přidání těl procedur obsluhy to zase začalo ukládat 
>>> nepoužívané registry.
>>> 
>>> Následně po laborování jsem zjistil, že pokud uložím podprogramy, 
>>> které se volají z hlavního programu přerušení před něj, je zase vše v
>> pořádku.
>>> 
>>> Správná struktura
>>> Podprogram_přerušení1
>>> Podprogram_přerušení2
>>> Program_přerušení
>>> 
>>> Špatná struktura
>>> Program_přerušení
>>> Podprogram_přerušení1
>>> Podprogram_přerušení2
>>> 
>>> Zatím tohle chování neumím vysvětlit. Dělá to jak Hi-Tech 9,80 tak 
>>> XC8
>> 1,30.

>> Soudím, že to je proto, že při překladu "Program_přerušení" překladač 
>> neví, které registry budou v těch volaných "Podprogram_přerušení" 
>> použity a proto pro jistotu uloží všechno. Když už je ale má přeložené 
>> před tím, tak to ví a správně uloží jen co je potřeba.

>> D.O.

>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz 
>> http://list.hw.cz/mailman/listinfo/hw-list

>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz 
>> http://list.hw.cz/mailman/listinfo/hw-list

> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list

> _______________________________________________
> 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