problemy s ukolem

Uživatelský avatar
Kate
Matfyz(ák|ačka) level III
Příspěvky: 146
Registrován: 8. 1. 2005 10:52
Typ studia: Informatika Mgr.
Bydliště: Milada squat
Kontaktovat uživatele:

problemy s ukolem

Příspěvek od Kate »

tak jsem z toho vedra zacala delat ukol a uz to i docela slape, nefunguji pouze dva priklady, ty ovsem nefunguji primo dabelsky :evil: . Jde o #8 a #9.

laicky receno to vypada, ze obsah registru (resp. spis jakasi stinova informace o typu hodnoty, v nem ulozene) se po zavolani funkce "ztrati", a to i presto, ze prislusna hodnota v tomto regsitru stale je (volana fce puvodni obsah registru uklada a zase vraci).

Kodem receno: (du6-test8)

Kód: Vybrat vše

TWO:
38:	EPUSH	R0	       // ulozeni puvodni hodnoty R0 na svuj stack
39:	ELDLITI	R0,LITINT[0]    // naplneni R0
40:	LESTI	[-1],R0            // ulozeni obsahu R0 na ocekavane misto, vyhrazene volajici fci pro navratovou hodnotu
41:	EPOP	R0	      // vraceni puvodni hodnoty R0
42:	RET
DU6TEST:
43:	ELDLITI	R0,LITINT[1]	    // naplneni R0
44:	INITI			    // vyhrazeni mista pro navratovou hodnotu fce TWO
45:	CALL	38	;; label=TWO	   // zavolani TWO
46:	EPOPI	R1			  // ulozeni vracene hodnoty TWO do R1
47:	EGTI	R0,R0,R1		        // tady to rve, jakoby v R0 ten puvodni int uz nebyl, ale on tam je
48:	JEF	6,R0	;; target=54
[...]
Pokud nekdo podobny problem resil a vyresil (v #9 je to v principu o tom samem), prosim, hodte sem nejaky hinty, protoze me uz po 2 dnech opravdu dosla invence, jak na to.
Člověk si nemusí nic myslet, aby něco udělal.
Uživatelský avatar
luk
Matfyz(ák|ačka) level II
Příspěvky: 74
Registrován: 6. 6. 2005 18:32
Typ studia: Informatika Mgr.
Bydliště: Praha

Příspěvek od luk »

Tak jsem se po dlouhé době vrátil do civilizace a koukám, že v jejím samém středu, na MatFyzáckém foru, je mrtvo jak v hrobě :shock:
Cožpak nikdo kromě mne a Kate úkol nedělá?! A taková pěkná přednáška to byla! :twisted:

Já jsem tedy nakonec, co bych se nepochlubil ;), k úkolu zasedl ještě před svým odjezdem do širokých východních stepí a také ho dokončil, odeslal a v indexu mne hřeje poslední pořebný zápočet :D Ani to moc času nestálo, neřkuli že to nebolelo :).
Luk
emko_anonym

Příspěvek od emko_anonym »

luk píše:Tak jsem se po dlouhé době vrátil do civilizace a koukám, že v jejím samém středu, na MatFyzáckém foru, je mrtvo jak v hrobě :shock:
Cožpak nikdo kromě mne a Kate úkol nedělá?! A taková pěkná přednáška to byla! :twisted:

Já jsem tedy nakonec, co bych se nepochlubil ;), k úkolu zasedl ještě před svým odjezdem do širokých východních stepí a také ho dokončil, odeslal a v indexu mne hřeje poslední pořebný zápočet :D Ani to moc času nestálo, neřkuli že to nebolelo :).
Právě se na něj zítra chystám. A kolik presně dní (hodin) ti to celkem zabralo? Toto číslo ještě potom přenásobím svým KOEFICIENTEM BLBOSTI(>1) a dostanu se na svuj dolni odhad času. :)
Kolik se toho chystáš udělat ještě navíc (abys dostal známku rovnou)? Myslíš, že to má smysl vzhledem ke spotřebovanému času? Zajímá mě tvůj názor.
Uživatelský avatar
luk
Matfyz(ák|ačka) level II
Příspěvky: 74
Registrován: 6. 6. 2005 18:32
Typ studia: Informatika Mgr.
Bydliště: Praha

Příspěvek od luk »

Ahoj!

Já byl na zkoušce, takže jsem dělal řešení jenom na zápočet a co se týče stráveného času, překvapivě na to stačily 2 dny. Na hodiny to spočítané nemám, ale přes 48 hodin to nelezlo :D

S čím jsem se patlal nejdýl byla ta chyba, co tu popisovala Kate, ale nakonec bylo řešení uznáno i s ní a upřímně si myslím, že je to chyba ICM, protože na vygenerovaném kódu ani u Kate ani u sebe při sebelepším pátrání chybu nevidím :)

Pokud jsi nebyl na zkoušce, tak by možná stálo zato udělat jednu těžší věc...například alokaci registrů (a k tomu teda live-range analysis), to by snad mohlo na nějakou hezčí známku stačit. Ovšem netuším, jaké má ulita nastavené hodnocení (jestliže vůbec nějaké předem má ;))
Luk
emko_anonym

Trivialni dotaz k ukolu

Příspěvek od emko_anonym »

luk píše:Ahoj!

Já byl na zkoušce, takže jsem dělal řešení jenom na zápočet a co se týče stráveného času, překvapivě na to stačily 2 dny. Na hodiny to spočítané nemám, ale přes 48 hodin to nelezlo :D

S čím jsem se patlal nejdýl byla ta chyba, co tu popisovala Kate, ale nakonec bylo řešení uznáno i s ní a upřímně si myslím, že je to chyba ICM, protože na vygenerovaném kódu ani u Kate ani u sebe při sebelepším pátrání chybu nevidím :)

Pokud jsi nebyl na zkoušce, tak by možná stálo zato udělat jednu těžší věc...například alokaci registrů (a k tomu teda live-range analysis), to by snad mohlo na nějakou hezčí známku stačit. Ovšem netuším, jaké má ulita nastavené hodnocení (jestliže vůbec nějaké předem má ;))

Tak jsem se předevčírem do toho dal. Zatím to jde celkem dobře. Obávám se, že jsem ale uplně nepochopil, co PŘESNĚ udělat v souboru: rmginstrsel.cpp v těch posledních 2 podmínkách, kde se testuje non-entry a non-exit blok. Můžeš mi to prosím tě nějak srozumitelněji vysvětlit?
Díky
Uživatelský avatar
luk
Matfyz(ák|ačka) level II
Příspěvky: 74
Registrován: 6. 6. 2005 18:32
Typ studia: Informatika Mgr.
Bydliště: Praha

Příspěvek od luk »

Ahoj!

Jde o to, že, abys věděl, se kterými registry máš pracovat, musíš si nějak simulovat, co se děje na zásobníku. Vstupní blok začíná se zásobníkem na nule a výstupní s ním tak končí, ale uprostřed je potřeba si mezi jednotlivými bloky předávat informaci o tom, jak to s tím zásobníkem je, protože jeho obsah není nijak implicitně daný a a ten funktor se volá pro každý blok zvlášť.
Doufám, že jsem to řekl nějak srozumitelně, přeju hodně zdaru :)
Luk
emko_anonym

Příspěvek od emko_anonym »

luk píše:Ahoj!

Jde o to, že, abys věděl, se kterými registry máš pracovat, musíš si nějak simulovat, co se děje na zásobníku. Vstupní blok začíná se zásobníkem na nule a výstupní s ním tak končí, ale uprostřed je potřeba si mezi jednotlivými bloky předávat informaci o tom, jak to s tím zásobníkem je, protože jeho obsah není nijak implicitně daný a a ten funktor se volá pro každý blok zvlášť.
Doufám, že jsem to řekl nějak srozumitelně, přeju hodně zdaru :)

Překladačům a Lukovi zdar!
Luku promin, zase budu otravnej jak svítiplyn. :D. Bohužel, vynechal jsem pár přednášek a cvičení, a byla to chyba.
Já jsem předopokládal, že k tomu, abych zjistil, kolik registrů je již použitých, slouží fce: get_used_regs (), kterou můžu volat rovnou na určitou funkci, která se také předává do toho funktoru: visitor_instruction_stack_to_register , takže je přístupná pro to generování jednotlivých instrukcí. Tato informace by tedy měla být přistupná pro všechny základní bloky dané funkce, ne? Stejně tak je přístupná funkce: set_used_regs , kterou naopak bych měl nastavit hodnotu používaných registrů podle určité právě zpracovávané instrukce, nebo ne?
Předpokládal jsem, že pokud chci použít nový registr, tak použiju ten nejbližší vyšší aktuálně použitého registru. Bednárek to v tom svém příkladu děla přeci obdobně.
Nebo, jaky je tedy jiný správný postup propašování informace o použití toho kterého registru do visitor_instruction_stack_to_register ?

Pokud bys měl chut mi to vysvětlit třeba ještě polopatičtěji, jsem ted večer na ICQ: 222470183. A asi by to bylo i lepší. Nemusím svými hloupými dotazy zatěžovat celé fórum. :)
Měj se pěkně a brzy nashledanou!
Návštěvník

Laskavost

Příspěvek od Návštěvník »

Nenašla by se nějaká dobrá duše, která by se chtěla podělit o své řešení?
jjj

HELP

Příspěvek od jjj »

Myslim, ze jsem se dostal do stejneho problemu, jako mela Kate na zacatku tohohle threadu. Mohl by mi nekdo poradit, kde ten problem vezi? Dik
Uživatelský avatar
luk
Matfyz(ák|ačka) level II
Příspěvky: 74
Registrován: 6. 6. 2005 18:32
Typ studia: Informatika Mgr.
Bydliště: Praha

Příspěvek od luk »

Ahoj, s největší pravděpodobností je to nějaký problém ICM, tím spíš, že je nás tolik, co ho má :)
Luk
Odpovědět

Zpět na „SWI109 Konstrukce překladačů“