czerwiec+2007





 y := R0 || y jest zbedne ||< a,c,y || R1 := R1 - R0  x := R1 || x jest zbedne ||< c,x,y || R2 := R2 / R1  b := R2 || b jest zbedne ||< c,x,y  po tej instr. chyba c nie jest żywe, bo potem pojawia się w c:=y ktoś wie ?? ? || po tej instr. chyba x nie jest żywe, bo już dalej nie potrzebne ktoś wie ??? || j.w. dot. x i y (chyba????) || b := R1 || b bedzie zywe ||< a,b,x,y || c := R0 || c bedzie zywe ||< a,b,c,x,y || Jako zywe oznaczelem te zmienne, ktore beda potem jeszcze uzyte. Na koniec wg zalozenia zadania a, b, c maja byc zywe. Oznaczylem tez, ktore przypisania Zmienna := Rejestr mozna pominac, ze wzgledu na zywotnosc i tego, ze ich wartosci sa w rejestrach.
 * Instrukcja || R0 || R1 || R2 || Kod || Mozna pominąć ||< Żywe ||
 * y := b || b, y || - || - || R0 := b
 * x := a - y || b, y || x || - || R1 := a
 * b := c / x || y || x || b || R2 := c
 * a := x || y || a, x || b || a := R1 || a bedzie zywe ||< a,x,y
 * c := y || c, y || a, x || b || c := R0 || c jest zbedne ||< a,x,y
 * b := a - b || c, y || b || - || R1 := R1 - R2
 * c := c / b || c || b || - || R0 := R0 - R1

Czy to jest ok?

odp: hmm, raczej nie o to chodzi. Mnie się wydaje, że powinno to się zrobić tak: R1:=y R0:=R0-R1 || a R0 a R0 a ||  || c c c || R0 || b R1 b R1 b || a a x || y y ||   || x := a - y || R2 := R2/R0 ||  || R2 || c R2 c || R0 R0 || R1 b R1 b || x x || y y || c b || b := c/x || R0 := R0 - R2 || a R0 a || R2 R0 || R1 b R1 ||  ||   || a b || c c || b || b := a - b || c := R1 ||  ||   ||   ||   ||   ||   ||   ||   ||   || W ten sposób mamy o kilka instrukcji mniej. Misiek
 * KOD MASZYN || a || b || c || x || y || R0 || R1 || R2 || KOD ||
 * || a || b || c ||  ||   ||   ||   ||   ||   ||
 * || a ||  || c ||   || b ||   ||   ||   || y := b ||
 * R0:=a
 * R2 := c
 * || R0 || R2 || c ||  || R1 b || a || y || b || a := x ||
 * || R0 || R2 || R1 b ||  ||   || a || c || b || c := y ||
 * a := R0
 * R1 := R1/R0 || a || R0 || R1 ||  ||   || b || c ||   || c := c/b ||
 * b := R0

Odp: Z tym, ze 'y := b' powinno byc po 'x := a - y' dalej wydaje mi sie byc ok, 'a := R0 z 10' linni jest zbyteczne, 'a' jest juz w R0. w pierwszej tabelce na szaro oznaczylem, ktore z wygenerowanych instrukcji mozna pominac (z 14 robi sie 10) W mojej tabelce (nr 1) chyba tylko brakuje opisu wartosci(jakie sa na slajdzie z wykladu 11).



1. A -> xBy, 2. A -> x, 3. B -> yA Follow(A) = {y, #}, Follow(B) = {y} Konflikt s/r
 * || A || B || x || y || # ||
 * 0 || 1 ||  || s2 ||   ||   ||
 * 1 ||  ||   ||   ||   || acc ||
 * 2 ||  || 5 ||   || s3/r2 || r2 ||
 * 3 || 4 ||  || s2 ||   ||   ||
 * 4 ||  ||   ||   || r3 || r3 ||
 * 5 ||  ||   ||   || s6 ||   ||
 * 6 ||  ||   ||   || r1 || r1 ||