to me hazi rovnou to moaNávštěvník píše:Mam asi dost blby dotaz - ale jak vubec prijdu k tomu vystupu .moa? predpokladam, ze -Sfile mi hodi file.mo ale jak z toho dostanu tu textovou verzi?
DU5
-
- Matfyz(ák|ačka) level II
- Příspěvky: 85
- Registrován: 12. 5. 2007 15:58
- Typ studia: Informatika Mgr.
- Login do SIS: dolej5am
- Kontaktovat uživatele:
Re: du5
-
- Matfyz(ák|ačka) level I
- Příspěvky: 17
- Registrován: 1. 1. 2007 22:29
- Typ studia: Informatika Mgr.
- Login do SIS: skalt5am
Re: du5
Tady je:Návštěvník píše:A mohl bys mi tady ten prikaz cely prosim napsat?
Kód: Vybrat vše
mlc.exe du5-test1.mls du5-test1-my.mo -Sdu5-test1-my.moa >> du5-test1-my.out
- hippies
- Admin(ka) level I
- Příspěvky: 990
- Registrován: 29. 9. 2004 12:46
- Typ studia: Informatika Mgr.
- Login do SIS: procj4am
- Bydliště: Mladá Boleslav
- Kontaktovat uživatele:
Re: du5
co je ktera pripona zac je na strankach ulity a jak pouzit mls se da vycist z mainu
Chjo, dovede te si představit svět, kde by byla každá harmonická diferenciální forma (jistého typu) nesingulární projektivní algebraické variety racionální kombinací kohomologických tříd algebraických cyklů..
-
- Matfyz(ák|ačka) level I
- Příspěvky: 1
- Registrován: 26. 12. 2007 11:59
- Typ studia: Informatika Bc.
Re: DU5
No tak rovnaky problem mam aj ja. Stale dostavam ERROR: Requested bad value type on IP=??? na instrukcii RET.
Zistil som, ze ked na konci procedury (pred RET) vygenerujem DTORI, DTORR, DTORS instrukcie, ktore odinicializuju parametre procedury, tak mi toto funguje, bez DTORX instrukcii nie:
Takze to podla mna vyzera tak, ze podklady na DU5 negeneruju tieto instrukcie same tak, ako by mali.
Zistil som, ze ked na konci procedury (pred RET) vygenerujem DTORI, DTORR, DTORS instrukcie, ktore odinicializuju parametre procedury, tak mi toto funguje, bez DTORX instrukcii nie:
Kód: Vybrat vše
program test;
procedure writearg(s : string);
begin
writes(s);
end;
begin
writearg('test');
end.
-
- Matfyz(ák|ačka) level I
- Příspěvky: 17
- Registrován: 1. 1. 2007 22:29
- Typ studia: Informatika Mgr.
- Login do SIS: skalt5am
Re: DU5
Nevíte někdo, jak se pracuje s konstantama?
S proměnnýma je to jasný.
U nich se použije funkce
variable_symbol::address()
pro získávání offsetu a výsledek se dá jako parametr instukci
ai::xLDy(stack_address)
kde x {Localni, Globalni} a y {Bool, Integer, Real, String}.
Jak je to ale u konstant?
Myslim, ze se tam pouzije instukce ai::LDLITy, ale co mam dat jako parametr a jak ho ziskam?
Diky za kazdou radu.
S proměnnýma je to jasný.
U nich se použije funkce
variable_symbol::address()
pro získávání offsetu a výsledek se dá jako parametr instukci
ai::xLDy(stack_address)
kde x {Localni, Globalni} a y {Bool, Integer, Real, String}.
Jak je to ale u konstant?
Myslim, ze se tam pouzije instukce ai::LDLITy, ale co mam dat jako parametr a jak ho ziskam?
Diky za kazdou radu.
- Petr-H
- Matfyz(ák|ačka) level II
- Příspěvky: 81
- Registrován: 30. 1. 2006 14:18
- Typ studia: Informatika Mgr.
- Login do SIS: hosep5am
- Bydliště: VŠK 17. listopadu
- Kontaktovat uživatele:
Re: DU5
Jako hodnotu instrukce LDLIT* použiješ přímo hodnotu konstanty resp. odkaz do tabulky. Tedy např. pro načtení celočíselné konstanty použiješ tento kódTom píše:Nevíte někdo, jak se pracuje s konstantama?
S proměnnýma je to jasný.
U nich se použije funkce
variable_symbol::address()
pro získávání offsetu a výsledek se dá jako parametr instukci
ai::xLDy(stack_address)
kde x {Localni, Globalni} a y {Bool, Integer, Real, String}.
Jak je to ale u konstant?
Myslim, ze se tam pouzije instukce ai::LDLITy, ale co mam dat jako parametr a jak ho ziskam?
Diky za kazdou radu.
Kód: Vybrat vše
LDLITI(symbol_pointer->access_const()->access_int_const()->int_value())
-
- Matfyz(ák|ačka) level II
- Příspěvky: 85
- Registrován: 12. 5. 2007 15:58
- Typ studia: Informatika Mgr.
- Login do SIS: dolej5am
- Kontaktovat uživatele:
Re: du5
No, zacal jsem delat rozsirenou verzi a narazil jsem na nekolik problemu...
1. kdyz mam record, ten obsahuje polozky a,b treba. A xR je jeho instance.
potom mi neexistuje symbol_pointer na polozku b (ani a), kdyz nacitam promennou, tak vzdycky kontroluju sp
takze nejdriv to nacte xR, to je v poho, ale u b to napise, ze ho nezna...
2. stejne tak to kupodivu nevi, jestli je to b globalni, nebo lokalni promenna...
3. To znamena, ze u prirazeni xR.b := 10; mi to zahlasi i u prirazeni, ze b neni globalni ani lokalni...
4. jak ziskat adresy tech polozek recordu.
a) polozek
b) celych recordu
Protoze me osobne treba spadne, kdyz zkusim neco jako
tmp = xR->sp->access_global_variable()->address(); || tmp = xR->sp->access_local_variable()->address();
a potom forcyklus
tmp = tmp + (vsechny nazvy po ceste)->sp->access_variable()->type()->access_record()->find( (vsechny nazvy po ceste)->id)->offset();
5. je nejaky rozdil mezi
access_global_variable()
access_local_variable()
access_variable()
a jaky?
6. pokud nekde ve faktoru zjistim, ze ten identifikator je record, jak dosadim do typu, ze to je RECORD a ze to je ten konkretni record, abych to u
promenna := vyraz dokazal zkontrolovat?
1. kdyz mam record, ten obsahuje polozky a,b treba. A xR je jeho instance.
potom mi neexistuje symbol_pointer na polozku b (ani a), kdyz nacitam promennou, tak vzdycky kontroluju sp
takze nejdriv to nacte xR, to je v poho, ale u b to napise, ze ho nezna...
2. stejne tak to kupodivu nevi, jestli je to b globalni, nebo lokalni promenna...
3. To znamena, ze u prirazeni xR.b := 10; mi to zahlasi i u prirazeni, ze b neni globalni ani lokalni...
4. jak ziskat adresy tech polozek recordu.
a) polozek
b) celych recordu
Protoze me osobne treba spadne, kdyz zkusim neco jako
tmp = xR->sp->access_global_variable()->address(); || tmp = xR->sp->access_local_variable()->address();
a potom forcyklus
tmp = tmp + (vsechny nazvy po ceste)->sp->access_variable()->type()->access_record()->find( (vsechny nazvy po ceste)->id)->offset();
5. je nejaky rozdil mezi
access_global_variable()
access_local_variable()
access_variable()
a jaky?
6. pokud nekde ve faktoru zjistim, ze ten identifikator je record, jak dosadim do typu, ze to je RECORD a ze to je ten konkretni record, abych to u
promenna := vyraz dokazal zkontrolovat?
Re: du5
Mozno trieskam, ale myslim ze ten $$.typ by mal byt type_pointer. Takze ak je to record tak tam das to co sa ti po vytvoreni toho tvojho recordu vrati a potom to budes moct kontrolovat. Ak to nie je record ale napr real tak tam ide logical_real atp... Take nieco mam v poznamkach z cvika.Jochanan píše: 6. pokud nekde ve faktoru zjistim, ze ten identifikator je record, jak dosadim do typu, ze to je RECORD a ze to je ten konkretni record, abych to u
promenna := vyraz dokazal zkontrolovat?
-
- Matfyz(ák|ačka) level II
- Příspěvky: 85
- Registrován: 12. 5. 2007 15:58
- Typ studia: Informatika Mgr.
- Login do SIS: dolej5am
- Kontaktovat uživatele:
Re: du5
Jasne, ale to udelas jak? Kdyz mas type_pointer z ty promenny a type_pointer z vyrazu, jak je porovnas, ze jsou stejnyho typu? Protoze tp==tp nejde.rastiq píše:Mozno trieskam, ale myslim ze ten $$.typ by mal byt type_pointer. Takze ak je to record tak tam das to co sa ti po vytvoreni toho tvojho recordu vrati a potom to budes moct kontrolovat. Ak to nie je record ale napr real tak tam ide logical_real atp... Take nieco mam v poznamkach z cvika.Jochanan píše: 6. pokud nekde ve faktoru zjistim, ze ten identifikator je record, jak dosadim do typu, ze to je RECORD a ze to je ten konkretni record, abych to u
promenna := vyraz dokazal zkontrolovat?
- Soptik
- Matfyz(ák|ačka) level I
- Příspěvky: 25
- Registrován: 25. 12. 2004 12:15
- Typ studia: Informatika Mgr.
- Bydliště: Praha, Uhříněves
- Kontaktovat uživatele:
Re: du5
na to mame "krasnou funkci" identical_type (tp1, tp2) ze 4.ukoluJochanan píše:Jasne, ale to udelas jak? Kdyz mas type_pointer z ty promenny a type_pointer z vyrazu, jak je porovnas, ze jsou stejnyho typu? Protoze tp==tp nejde.
-
- Matfyz(ák|ačka) level II
- Příspěvky: 85
- Registrován: 12. 5. 2007 15:58
- Typ studia: Informatika Mgr.
- Login do SIS: dolej5am
- Kontaktovat uživatele:
Re: du5
Ta funkce je opravdu super uz jsem se bal, ze to zase budu muset nejak extra prolejzat...Soptik píše:na to mame "krasnou funkci" identical_type (tp1, tp2) ze 4.ukoluJochanan píše:Jasne, ale to udelas jak? Kdyz mas type_pointer z ty promenny a type_pointer z vyrazu, jak je porovnas, ze jsou stejnyho typu? Protoze tp==tp nejde.