Fordítás Kódoptimalizálás

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Fordítás Kódoptimalizálás"

Átírás

1 Fordítás Kódoptimalizálás Kód visszafejtés. Izsó Tamás október 15. Izsó Tamás Fordítás Kódoptimalizálás / 1

2 Aktív változók Angol irodalomban a Live Variables kifejezést használják, míg az azt felhasználó elemzést Liveness Analysis-nek hívják. Az aktív változók ismeretében lehet a felesleges utasításokat megszüntetni. Egy változó a program egy pontján aktív, ha később az értéke felhasználásra kerül. Izsó Tamás Fordítás Kódoptimalizálás / 2

3 Aktív változók előállítása A feldolgozás az alapblokk végétől az eleje felé halad. A blokk végén lévő aktív változók halmazát az algoritmus alapján mi határozzuk meg. Amikor az a = b + c 1 kifejezéshez érünk: az a változót ki kell venni; a b és c változókat be kell tenni az az aktív változók halmazába. 1 Összeadás helyett tetszőleges egy és kétoperandusú kifejezés is szerepelhet. Izsó Tamás Fordítás Kódoptimalizálás / 3

4 Aktív változó v=x+y; c=v+5; v=z+w Izsó Tamás Fordítás Kódoptimalizálás / 4

5 Aktív változó v=x+y; v változó definiálása c=v+5; v=z+w Izsó Tamás Fordítás Kódoptimalizálás / 4

6 Aktív változó v=x+y; v változó definiálása v változó használata c=v+5; v=z+w Izsó Tamás Fordítás Kódoptimalizálás / 4

7 Aktív változó v=x+y; v változó definiálása v változó használata v változó újradefiniálása c=v+5; v=z+w Izsó Tamás Fordítás Kódoptimalizálás / 4

8 Aktív változó v=x+y; v változó definiálása v változó használata v változó újradefiniálása v változó értéke felesleges c=v+5; v=z+w Izsó Tamás Fordítás Kódoptimalizálás / 4

9 Aktív változó globális analízise v változó aktív a p pontban start v változó nem aktív a p pontban start v változó aktív a p pontban start v=x+y; p v=x+y; p p a=v+5; v=x+5; v=v+5; end end end Izsó Tamás Fordítás Kódoptimalizálás / 5

10 Aktív változók előállítása a = b; c = a; d = a + b; e = d; d = a; f = e; Izsó Tamás Fordítás Kódoptimalizálás / 6

11 Aktív változók előállítása a = b; c = a; d = a + b; e = d; d = a; f = e; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 6

12 Aktív változók előállítása a = b; c = a; d = a + b; e = d; d = a; { b, d, e} f = e; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 6

13 Aktív változók előállítása a = b; c = a; d = a + b; e = d; { a, b, e} d = a; { b, d, e} f = e; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 6

14 Aktív változók előállítása a = b; c = a; d = a + b; { a, b, d } e = d; { a, b, e} d = a; { b, d, e} f = e; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 6

15 Aktív változók előállítása a = b; c = a; { a, b } d = a + b; { a, b, d } e = d; { a, b, e} d = a; { b, d, e} f = e; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 6

16 Aktív változók előállítása a = b; { a, b } c = a; { a, b } d = a + b; { a, b, d } e = d; { a, b, e} d = a; { b, d, e} f = e; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 6

17 Aktív változók előállítása { b } a = b; { a, b } c = a; { a, b } d = a + b; { a, b, d } e = d; { a, b, e} d = a; { b, d, e} f = e; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 6

18 Felesleges kód törlése { b } a = b; { a, b } c = a; { a, b } d = a + b; { a, b, d } e = d; { a, b, e} d = a; { b, d, e} f = e; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 7

19 Felesleges kód törlése { b } a = b; { a, b } c = a; { a, b } d = a + b; { a, b, d } e = d; { a, b, e} d = a; { b, d, e} f = e; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 7

20 Felesleges kód törlése { b } a = b; { a, b } c = a; { a, b } d = a + b; { a, b, d } e = d; { a, b, e} d = a; { b, d, e} {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 7

21 Felesleges kód törlése { b } a = b; { a, b } c = a; { a, b } d = a + b; { a, b, d } e = d; { a, b, e} d = a; { b, d, e} {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 7

22 Felesleges kód törlése { b } a = b; { a, b } { a, b } d = a + b; { a, b, d } e = d; { a, b, e} d = a; { b, d, e} {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 7

23 Felesleges kód törlése a = b; d = a + b; e = d; d = a; Izsó Tamás Fordítás Kódoptimalizálás / 7

24 Aktív változók előállítása II a = b; d = a + b; e = d; d = a; Izsó Tamás Fordítás Kódoptimalizálás / 8

25 Aktív változók előállítása II a = b; d = a + b; e = d; d = a; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 8

26 Aktív változók előállítása II a = b; d = a + b; e = d; {a, b } d = a; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 8

27 Aktív változók előállítása II a = b; d = a + b; {a, b, d } e = d; {a, b } d = a; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 8

28 Aktív változók előállítása II a = b; {a, b } d = a + b; {a, b, d } e = d; {a, b } d = a; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 8

29 Aktív változók előállítása II { b } a = b; {a, b } d = a + b; {a, b, d } e = d; {a, b } d = a; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 8

30 Felesleges kód törlése { b } a = b; {a, b } d = a + b; {a, b, d } e = d; {a, b } d = a; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 9

31 Felesleges kód törlése { b } a = b; {a, b } d = a + b; {a, b, d } e = d; {a, b } d = a; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 9

32 Felesleges kód törlése { b } a = b; {a, b } d = a + b; {a, b, d } {a, b } d = a; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 9

33 Felesleges kód törlése a = b; d = a + b; d = a; Izsó Tamás Fordítás Kódoptimalizálás / 9

34 Aktív változók előállítása III a = b; d = a + b; d = a; Izsó Tamás Fordítás Kódoptimalizálás / 10

35 Aktív változók előállítása III a = b; d = a + b; d = a; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 10

36 Aktív változók előállítása III a = b; d = a + b; {a, b } d = a; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 10

37 Aktív változók előállítása III a = b; {a, b } d = a + b; {a, b } d = a; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 10

38 Aktív változók előállítása III { b } a = b; {a, b } d = a + b; {a, b } d = a; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 10

39 Felesleges kód törlése { b } a = b; {a, b } d = a + b; {a, b } d = a; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 11

40 Felesleges kód törlése { b } a = b; {a, b } d = a + b; {a, b } d = a; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 11

41 Felesleges kód törlése { b } a = b; {a, b } {a, b } d = a; {b, d } Izsó Tamás Fordítás Kódoptimalizálás / 11

42 Felesleges kód törlése a = b; d = a; Izsó Tamás Fordítás Kódoptimalizálás / 11

43 Aktív változók előállításának a formalizálása In n = n Kill n ) Gen n (Out { Out n = BI n az utolsó blokk végén. x succ(n) In x máskülönben. A kimenet van összehuzalozva az n után következő bemenetek uniójával. -ból következik, hogy az inicializálás az üres halmazzal történik, kivéve a kezdő állapotot. Out n alapján számítjuk az In n -t, tehát a számítás visszafele halad. Izsó Tamás Fordítás Kódoptimalizálás / 12

44 Reaching Definition analízis Az analízis megadja, hogy a program egy adott pontján az x változó hol kapott értéket. Elágazások és ciklusok miatt több ponton is definiálva 2 lehet. RD entry (p) = { RDinit kezdetben. p pred(p) RD exit(p ) máskülönben. RD exit (p) = (RD entry (p)\kill RD (p)) Gen RD (p) 2 Itt a definíciót bővebb értelemben használjuk. Minden pont, ahol egy változó értéket kap definíciós pontnak hívjuk. Izsó Tamás Fordítás Kódoptimalizálás / 13

45 Reaching Definition jelölések Ha az x változót a p pontban definiálva van, akkor ezt a tényt a (x, p) párral fejezzük ki. Az RD entry (p) és az RD exit (p) ezeknek a pároknak a halmazát tartalmazza. Inicializálás RD init = {(x,?) x programváltozó.} A kérdőjel azt jelenti, hogy még nem lett inicializálva a változó. Izsó Tamás Fordítás Kódoptimalizálás / 14

46 Példa Reaching Definition-ra [m := 2] 1 ; while [ n > 1] 2 do [m := m n ] 3 ; [ n := n 1] 4 end while [ stop ] 5 RD entry (1) = {(m,?), (n,?)} RD exit (1) = {(m, 1), (n,?)} RD entry (2) = RD exit (1) RD exit (4) Izsó Tamás Fordítás Kódoptimalizálás / 15

47 RD végeredmény RD entry RD exit 1 {(m,?),(n,?)} {(m,1),(n,?)} 2 {(m,1),(m,3),(n,?),(n,4)} {(m,1),(m,3),(n,?),(n,4)} 3 {(m,1),(m,3),(n,?),(n,4)} {(m,3),(n,?),(n,4)} 4 {(m,3),(n,?),(n,4)} {(m,3),(n,4)} 5 {(m,1),(m,3),(n,?),(n,4)} {(m,1),(m,3),(n,?),(n,4)} Izsó Tamás Fordítás Kódoptimalizálás / 16

48 Konstans kiértékelés fordítási időben I RD [x := a] l [x := a[y n]] l y FV (a) (y,?) / RD entry (l) ha (y, l ) RD entry (l) y = y [...] l = [y := n] l RD [x := a] l [x := n] l { FV (a) = a nem konstans ha a kifejezés értéke n Izsó Tamás Fordítás Kódoptimalizálás / 17

49 Konstans kiértékelés fordítási időben II RD S 1 S 1 RD S 1 ; S 2 S 1 ; S 2 RD S 2 S 2 RD S 1 ; S 2 S 1 ; S 2 RD S 1 S 1 RD if[b l ] then S 1 else S 2 if[b l ] then S 1 else S 2 RD S 2 S 2 RD if[b l ] then S 1 else S 2 if[b l ] then S 1 else S 2 RD S S RD while[b l ] do S while[b l ] do S Izsó Tamás Fordítás Kódoptimalizálás / 18

50 Konstans kiértékelés példa I. Program: [ x :=10] 1 ; [ y := x +10] 2 ; [ z := y +10] 3 ; RD analízis eredménye: RD entry (1) = {(x,?), (y,?), (z,?)} RD exit (1) = {(x, 1), (y,?), (z,?)} RD entry (2) = {(x, 1), (y,?), (z,?)} RD exit (2) = {(x, 1), (y, 2), (z,?)} RD entry (3) = {(x, 1), (y, 2), (z,?)} RD exit (2) = {(x, 1), (y, 2), (z, 3)} Izsó Tamás Fordítás Kódoptimalizálás / 19

51 Konstans kiértékelés példa II. RD [x := 10] 1 ; [y := x + 10] 2 ; [z := y + 10] 3 ; [x := 10] 1 ; [y := ] 2 ; [z := y + 10] 3 ; [x := 10] 1 ; [y := 20] 2 ; [z := y + 10] 3 ; [x := 10] 1 ; [y := 20] 2 ; [z := ] 3 ; [x := 10] 1 ; [y := 20] 2 ; [z := 30] 3 ; Izsó Tamás Fordítás Kódoptimalizálás / 20

52 Konstans kiértékelés példa II. Visual Studio C eredménye 1 int funcion() { 2 int x,y,z; 3 x=1; 4 y=100*x; 5 z=100*y-y; 6 while( x < 4 ) { 7 z = z +y; 8 y = 2*x; 9 x++; 10 } 11 return z; 12 } Lefordított kód: _funcion : : mov eax,2710h : r e t Izsó Tamás Fordítás Kódoptimalizálás / 21

53 Section 1 Vezérlésfolyam analízis Izsó Tamás Fordítás Kódoptimalizálás / 22

54 Domináns alapblokk A B i alapblokk akkor domináns B j felett, ha az entry pontból a j-edik blokkig minden lehetséges úton eljutva érinteni kell a B i blokkot. Minden blokk domináns önmagával. (a dom b) (b dom c) (a dom c). Közvetlen, vagy szomszédos dominanciáról akkor beszélünk, ha a dom b és a b esetén nem létezik olyan c, hogy (a dom c) (c dom b). Posztdominanciáról akkor beszélünk, ha a B j blokkból az exit, blokk fele haladva minden úton érintjük a B k blokkot. Izsó Tamás Fordítás Kódoptimalizálás / 23

55 Struktúrális analízis dominancia Entry Entry B1 fib(m) f0=0 B1 B2 f1=1 m<=1 B2 exit B3 return 1 f1=1 B3 B4 B4 m >= 1 B5 B6 B5 return f2 f2=f0+f1 f0=f1 exit B6 f1=f2 m=m-1 Izsó Tamás Fordítás Kódoptimalizálás / 24

56 Domináns alapblokk m n D(n) az n-re domináns alapblokkok halmaza Pred(n) az irányított vezérlési folyamatgráf alapján az n-be menő élek forrás csomópontjai D(n) = {n} p pred(n) D(p) Izsó Tamás Fordítás Kódoptimalizálás / 25

57 Dominancia meghatározása procedure Dom_Comp( N, Pred, r ) N : in set of Node; Pred : in Node set of Node; r : in Node; begin D, T : set of Node; n, p : Node; change:=true: boolean; Domin : Node set of Node; for each n N - {r} do Domin(n):=N; repeat change := false; for each n N - {r} do T:=N; for each p Pred(n) do T = Domin(p) ; od; D := { n } T; if D Domin(n) then change := true; Domin(n) := D; fi; od; until!change return Domin Izsó Tamás Fordítás Kódoptimalizálás / 26

58 Depth-First Search Mélységi keresés A A B F B F C G hátra C G keresztbe D H előre D H Jelölés: PRE: A POST: A E A B C D E E D C B A F G H H G F A A F D E E D F G H H G F A B C C B A E Izsó Tamás Fordítás Kódoptimalizálás / 27

59 DFS algoritmus N : in set of Node; r, x : Node i:=1, j:=1 : integer; Pre, Post : Node integer; Visit: Node boolean; Etype: (Node x Node ) enum{ tree, forward, back, cross }; procedure Deap_First_Search( N, Succ, x ) N : in set of Node; Succ : in Node set of Node; x : in Node; begin y : Node; Visit(x) := true; Pre(x) := j; j = j + 1; for each y Succ(x) do if!visit(y) then Deep_First_Search(N,Succ,y); EType(x y) := tree; elif Pre(x) < Pre(y) then EType(x y) := forward; elif Post(y) = 0 then EType(x y) := back; else EType(x y) := cross; fi; od; Post(x) := i; i :+= 1; end begin for each x N do; Visit(x) := false; Pre(x) := Post(x) := 0; od Deep_First_Search(N,Succ,r); end Izsó Tamás Fordítás Kódoptimalizálás / 28

60 Section 2 Kód struktúra visszafejtése Izsó Tamás Fordítás Kódoptimalizálás / 29

61 CFG struktúrájának az analízis célja felismerni a magasszintű vezérlési szerkezeteket if... then..., if... then... else..., switch... case... for, while, repeat; nem struktúrált részben lévő blokkok számának a minimalizálása. Izsó Tamás Fordítás Kódoptimalizálás / 30

62 Gráf alapfogalmak B A F G irányított gráf, N csomópontok halmaza, E élek halmaza; G = N, E ; N = {A, B, C, D, E, F, G, H} C D G H E N N = {A B, A F, B C, C B, C D, C E, D E, F D, F G, G H, G H} E Succ(b) = {n N e E hogy e = b n} Pred(b) = {n N e E hogy e = n b} Izsó Tamás Fordítás Kódoptimalizálás / 31

63 Aciklikus struktúrák B1 B4 B4 B2 B3 B2 B3 B2 B4 B5 if-the-else if-then B6 B7 B1 blokk B2 B3 B4 B5 B6 case-switch Izsó Tamás Fordítás Kódoptimalizálás / 32

64 Ciklikus struktúrák B1 B0 B2 self-loop while-loop B1 B1 B2 B2 B3 természetes loop (improper) nem struktúrált szerkezet Izsó Tamás Fordítás Kódoptimalizálás / 33

65 Struktúra meghatározása Globális adatok: Succ, Pred : Node set of Node; RegionType = enum { Block, IfThen, IfThenElse, Case, Proper, SelfLoop, WhileLoop, NaturalLoop, Improper } ; // Blokk hozzárendelése az őt tartalmazó összevont struktúrához StructOf: Node Node; // Összevont struktúra típusa (pl. if-then) StructType: Node RegionType; // Összevont struktúrák halmaza Structures: set of Node; // Összevont struktúra alá tartozó blokkok StructNodes : Node set of Node; // Összevont struktúra hierarchiája CTNodes: set of Node; CTEdges : set of Node x Node; PostCtr, PostMax:integer; Post: integer Node; Visit: Node boolean; Izsó Tamás Fordítás Kódoptimalizálás / 34

66 Ciklus keresés n vissza k m Izsó Tamás Fordítás Kódoptimalizálás / 35

67 Ciklus keresés n vissza n pont a ciklus kezdete; k m Izsó Tamás Fordítás Kódoptimalizálás / 35

68 Ciklus keresés n k vissza n pont a ciklus kezdete; k N pont, ahol Pred(n) = k; m Izsó Tamás Fordítás Kódoptimalizálás / 35

69 Ciklus keresés n k vissza m n pont a ciklus kezdete; k N pont, ahol Pred(n) = k; olyan m pont, hogy n-ből m-be és m-ből k-ba van út. Izsó Tamás Fordítás Kódoptimalizálás / 35

70 Strukturális analízis Procedure StructuralAnalysis(N, E, entry) N : in set of Node; E: in set of (Node x Node); entry: in Node; begin m, n, p : Node; rtype : RegionType; NodeSet, ReachUnder: set of Node; StuctOf := StructType := ; Stuctures := StructNodes := ; CTNodes := N; CTEdges := ; repeat Post := ; Visit := PostMax := 0; PostCtr := 1 DFS_Postorder(N, E, entry ); while N > 1 PostCtr PostMax do n := Post(PostCtr) ; rtype :=AcyclicRType(N,E,rtype,NodeSet); if rtype nil then p:= Reduce(N,E,rtype,NodeSet) ; if entry NodeSet then entry := p; fi; else ReachUnder := {n}; for each n N do // k amely vissza élen eljut n-be és, // m pont, amihez van n m, // és m k-ba él. if PathBack(m,n) then ReachUnder = {m}; fi; od; rtype :=CyclicRType(N,E,rtype, ReachUnder); if rtype nil then p:= Reduce(N,E,rtype,ReachUnder) ; if entry ReachUnder then entry := p; fi else PostCtr += 1; fi fi od; until N = 1; end Izsó Tamás Fordítás Kódoptimalizálás / 36

71 Blokkok DFS bejárása Procedure DFS_Postorder(N, E, x) N : in set of Node; E: in set of (Node x Node); x: in Node; begin y : Node; Visit(x):=true; for each y Succ(x) do if!visit(y) then DFS_Postorder(N,E,y); if; od; PostMax+= 1; Post(PostMax) := x; end Izsó Tamás Fordítás Kódoptimalizálás / 37

72 Aciklikus struktúrák feltérképezése Procedure AcyclicRType(N,E,node,nset) : RegionType N : in set of Node; E: in set of (Node x Node); node: inout Node; nset: out set of Node; begin m, n : Node; p, s: boolean; nset := ; n := node; p := true; s := Succ(n) = 1; while p s do nset = {n}; n := Succ(n); p := Pred(n) = 1; s := Succ(n) = 1; od; if p then nset = {n}; fi n := node; p := Pred(n) = 1; s:=true; while p s do nset = {n}; n := Pred(n); p := Pred(n) = 1; s := Succ(n) = 1; od if s then nset = {n}; fi node := n; if nset 2 then return Block; elif Succ(node) = 2 then m := Succ(node); n:= (Succ(node)-{m}); if Succ(m) = Succ(n) Succ(m) = 1 Succ(n) = 1 Pred(m) = 1 Pred(n) = 1 then nset := {node, m, n}; return IfThenElse; elif else return nil; fi; fi; end Izsó Tamás Fordítás Kódoptimalizálás / 38

73 Ciklikus struktúrák feltérképezése Procedure CyclicRType(N,E,node,nset) : RegionType N : in set of Node; E: in set of (Node x Node); node: in Node; nset: inout set of Node; begin m : Node; if nset = 1 then if node node E then return SelfLoop; else return nil; fi; fi; if m nset!path(node,m,n) then nset := MinimizeImproper(N,E,node,nset); return Improper; fi m := (nset - { node }); if Succ(node) = 2 Succ(m) = 1 Pred(node) = 2 Pred(m) = 1 then return WhileLoop; else return NaturalLoop; fi; end Izsó Tamás Fordítás Kódoptimalizálás / 39

74 Redukció Entry Entrya Entryb B1 B2 B2a Entryb B3 B3 B3 Entryc B4 B5 B4 B5a B4 B5b B3a B6 exit B7 B7 exit exit exit Izsó Tamás Fordítás Kódoptimalizálás / 40

75 Improper struktúrák kezelése Fubo Zhang és Erik H. D Hollander bebizonyították, hogy az általuk definiált három elemi programtranszformációs lépés Forward Copy, Backward Copy, Cut segítségével minden nem strukturált programrész strukturált formává alakítható. Módszerüket magasszintű blokk strukturált programozási nyelvre alkalmazták. Haicheng Wu és társai kisebb átalakításokkal a módszert assembly szintű programra is alkalmazhatóvá tették. Cikkek: Fubo Zhang and Erik H. D Hollander. Using hammock graphs to structure programs. IEEE Trans. Software Eng., 30(4): , Haicheng Wu, Gregory Diamos, Jin Wang, Si Li, and Sudhakar Yalamanchili. Characterization and transformation of unstructured control flow in bulk synchronous gpu applications. Int. J. High Perform. Comput. Appl., 26(2): , May Izsó Tamás Fordítás Kódoptimalizálás / 41

76 Forward Copy A következő ábrán a {B1, B2} és a {B3, B4} blokkok IfThen szerkezetet alkotnának, ha az E1 és E2 szaggatott élek nem szerepelnének. Forward Copy transzformáció: 1 Forward copy transzformáció során az IfThen szerkezetet alkotó {B1, B2} részgráf közös pontja B3 és az E2 él között található gráfot le kell másolni. 2 A (B2, B3) él végpontját a megismételt struktúra B 3 pontjára állítani. Az így kapott jobb oldali ábra {B3, B4} szerkezetére a forward copy transzformációt megismételve a gráf reducibilissé válik. Izsó Tamás Fordítás Kódoptimalizálás / 42

77 Forward Copy transzformáció Entry Entry B1 B1 B2 B2 B3 B3 B'3 B4 B4 B'4 B5 E1 E2 B5 E1 E2 B'5 E'1 Exit Exit Izsó Tamás Fordítás Kódoptimalizálás / 43

78 Backward Copy A következő ábrán található ciklus improper, mivel a belsejébe a B1 blokkokból az E1 élen keresztül be tudunk ugrani. Backward Copy transzformáció: 1 A ciklust alkotó blokkokat meg kell ismételni (backward copy). Ezzel megszüntethetjük a ciklus belsejébe történő ugrást. 2 A C1 élet a megismételt ciklusra kell állítani. A struktúra továbbra is irreducibilis maradt, mivel a {B1, B2, B3} IfThen szerkezetnek két kilépési pontja van, de ezt már az előbb ismertetett forward copy transzformációval megszüntethetjük. Izsó Tamás Fordítás Kódoptimalizálás / 44

79 Backward Copy transzformáció Entry Entry B1 B1 B2 B2 B'2 B3 E1 B3 E1 B'3 C1 B4 B4 B'4 C'1 B5 B5 C1 B'5 Exit Exit Izsó Tamás Fordítás Kódoptimalizálás / 45

80 Cut A következő ábrán a ciklus belsejéből az E1 és az E2 éleken keresztül is kiléphetünk, tehát ciklust több kilépési ponttal is rendelkezik. 1 Ciklus végét és a kilépés okát tartalmazó változók bevezetése. 2 "compare cycle" blokk bevezetése. A ciklus szervezését erre kell építeni. 3 "compare from" blokk bevezetése. Kilépés okának megfelelő folytatás elkészítése. Izsó Tamás Fordítás Kódoptimalizálás / 46

81 Cut transzformáció Entry Entry B1 B1 B2 B2 B3 cycle==true B3 E1 cycle==true B5 E1 B4 B5 B4 cycle:=true from:=b5 cycle:=false from:=b5 cycle:=false from:=b4 cycle==false B6 E2 cycle==false compare cycle Exit from==b4 compare from from==b5 B6 Exit Izsó Tamás Fordítás Kódoptimalizálás / 47

82 Gondolatok a strukturált programozásról improper keresztél irreducibilis nem struktúrált Dahl Dijkstra Hoare, Strukturált programozás 7. fejezet, A programok megértéséről Donald E. Knuth, Stuctured Programming with goto Statesments Linux: Using goto In Kernel Code C-ben a break, continue valóban megsérti a strukturált programozás elvét, avagy irreducibilis lesz a CFG (vezérlésfolyan gráf)? Izsó Tamás Fordítás Kódoptimalizálás / 48

83 Regiszter hozzárendelés Intel x86 processzor utasításkészlete kevés regisztert tartalmaz; néhány regiszter használata korlátozott; a gyors futás érdekében az adatokat érdemes a regiszterben tartani; ha nincs elég regiszter, ki kell menteni a memóriába; minimalizálni kell az egyidejűleg használt regiszterek számát; általában színezési problémára vezethető vissza. Izsó Tamás Fordítás Kódoptimalizálás / 49

84 Regiszter hozzárendelés s1 s2 s3 s4 s5 s6 s1 = 2 s2 = 4 s3 = s1 + s2 s4 = s3 + 1 s5 = s1 * s2 s6 = s4 * s5 Izsó Tamás Fordítás Kódoptimalizálás / 50

85 Regiszter hozzárendelés s1 s2 s3 s4 s5 s6 s1 = 2 s2 = 4 s3 = s1 + s2 s4 = s3 + 1 s5 = s1 * s2 s6 = s4 * s5 Izsó Tamás Fordítás Kódoptimalizálás / 50

86 Regiszter hozzárendelés s1 s2 s3 s4 s5 s6 s1 = 2 s2 = 4 s3 = s1 + s2 s4 = s3 + 1 s5 = s1 * s2 s6 = s4 * s5 Izsó Tamás Fordítás Kódoptimalizálás / 50

87 Regiszter hozzárendelés s1 s2 s3 s4 s5 s6 s1 = 2 s2 = 4 s3 = s1 + s2 s4 = s3 + 1 s5 = s1 * s2 s6 = s4 * s5 Izsó Tamás Fordítás Kódoptimalizálás / 50

88 Regiszter hozzárendelés s1 s2 s3 s4 s5 s6 s1 = 2 s2 = 4 s3 = s1 + s2 s4 = s3 + 1 s5 = s1 * s2 s6 = s4 * s5 Izsó Tamás Fordítás Kódoptimalizálás / 50

89 Regiszter hozzárendelés s1 s2 s3 s4 s5 s6 s1 = 2 s2 = 4 s3 = s1 + s2 s4 = s3 + 1 s5 = s1 * s2 s6 = s4 * s5 Izsó Tamás Fordítás Kódoptimalizálás / 50

90 Regiszter hozzárendelés s1 s2 s3 s4 s5 s6 s1 = 2 s2 = 4 s3 = s1 + s2 s4 = s3 + 1 s5 = s1 * s2 s6 = s4 * s5 Izsó Tamás Fordítás Kódoptimalizálás / 50

91 Regiszter hozzárendelés s1 s2 s3 s4 s5 s6 s1 = 2 s2 = 4 s1 s3 s6 s3 = s1 + s2 s4 = s3 + 1 s5 = s1 * s2 s2 s4 s5 s6 = s4 * s5 Izsó Tamás Fordítás Kódoptimalizálás / 50

92 Regiszter hozzárendelés s1 s2 s3 s4 s5 s6 s1 = 2 s2 = 4 s1 s3 s6 s3 = s1 + s2 s4 = s3 + 1 s5 = s1 * s2 s2 s4 s5 s6 = s4 * s5 Izsó Tamás Fordítás Kódoptimalizálás / 50

93 Regiszter hozzárendelés s1 s2 s3 s4 s5 s6 s1 = 2 s2 = 4 s1 s3 s6 s3 = s1 + s2 s4 = s3 + 1 s5 = s1 * s2 s2 s4 s5 s6 = s4 * s5 Izsó Tamás Fordítás Kódoptimalizálás / 50

94 Regiszter hozzárendelés s1 s2 s3 s4 s5 s6 s1 = 2 s2 = 4 s1 s3 s6 s3 = s1 + s2 s4 = s3 + 1 s5 = s1 * s2 s2 s4 s5 s6 = s4 * s5 Izsó Tamás Fordítás Kódoptimalizálás / 50

95 Egyéb optimalizálási eljárások aritmetikai egyszerűsítés: x = 4 * a; x = a «2; konstans kifejezés kiértékelése: 4 * Izsó Tamás Fordítás Kódoptimalizálás / 51

96 Optimalizált kód visszafejthetősége megjegyzések elvesznek; szimbólikus nevek elvesznek; adattípusok elvesznek; ciklus átrendezés, és kifejtés (unrolling); különböző lokális változók azonos regiszterekben cserélik egymást ; algebrai átírás; kódmozgás; Izsó Tamás Fordítás Kódoptimalizálás / 52

Fordítás Kódoptimalizálás

Fordítás Kódoptimalizálás Fordítás Kódoptimalizálás Kód visszafejtés. Izsó Tamás 2016. október 20. Izsó Tamás Fordítás Kódoptimalizálás / 1 Aktív változók Angol irodalomban a Live Variables kifejezést használják, míg az azt felhasználó

Részletesebben

Vezérlésfolyam gráf és X86 utasításkészlet

Vezérlésfolyam gráf és X86 utasításkészlet Vezérlésfolyam gráf és X86 utasításkészlet Kód visszafejtés. Izsó Tamás 2016. november 3. Izsó Tamás Vezérlésfolyam gráf és X86 utasításkészlet / 1 Intervallum algoritmus Procedure Intervals(G={N, E, h})

Részletesebben

Fordító Optimalizálás

Fordító Optimalizálás Fordító Optimalizálás Kód visszafejtés. Izsó Tamás 2012. szeptember 27. Izsó Tamás Fordítás Optimalizálás / 1 Section 1 Fordító részei Izsó Tamás Fordítás Optimalizálás / 2 Irodalom Fordító részei Optimalizálás

Részletesebben

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás Kódgenerálás Memóriagazdálkodás Kódgenerálás program prológus és epilógus értékadások fordítása kifejezések fordítása vezérlési szerkezetek fordítása Kódoptimalizálás L ATG E > TE' E' > + @StPushAX T @StPopBX

Részletesebben

Algoritmizálás és adatmodellezés tanítása 1. előadás

Algoritmizálás és adatmodellezés tanítása 1. előadás Algoritmizálás és adatmodellezés tanítása 1. előadás Algoritmus-leíró eszközök Folyamatábra Irányított gráf, amely csomópontokból és őket összekötő élekből áll, egyetlen induló és befejező éle van, az

Részletesebben

Fordító Optimalizálás

Fordító Optimalizálás Fordító Optimalizálás Kód visszafejtés. Izsó Tamás 2013. október 9. Izsó Tamás Fordítás Optimalizálás / 1 Section 1 Fordító részei Izsó Tamás Fordítás Optimalizálás / 2 Irodalom Fordító részei Optimalizálás

Részletesebben

Java programozási nyelv

Java programozási nyelv Java programozási nyelv 2. rész Vezérlő szerkezetek Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/23 Tartalomjegyzék

Részletesebben

Fordító részei. Fordító részei. Kód visszafejtés. Izsó Tamás szeptember 29. Izsó Tamás Fordító részei / 1

Fordító részei. Fordító részei. Kód visszafejtés. Izsó Tamás szeptember 29. Izsó Tamás Fordító részei / 1 Fordító részei Kód visszafejtés. Izsó Tamás 2016. szeptember 29. Izsó Tamás Fordító részei / 1 Section 1 Fordító részei Izsó Tamás Fordító részei / 2 Irodalom Izsó Tamás Fordító részei / 3 Irodalom Izsó

Részletesebben

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása A fordítóprogramok szerkezete Forrásprogram Forrás-kezelő (source handler) Kódoptimalizálás Fordítóprogramok előadás (A,C,T szakirány) Lexikális elemző (scanner) Szintaktikus elemző (parser) Szemantikus

Részletesebben

BASH script programozás II. Vezérlési szerkezetek

BASH script programozás II. Vezérlési szerkezetek 06 BASH script programozás II. Vezérlési szerkezetek Emlékeztető Jelölésbeli különbség van parancs végrehajtása és a parancs kimenetére való hivatkozás között PARANCS $(PARANCS) Jelölésbeli különbség van

Részletesebben

Apple Swift kurzus 3. gyakorlat

Apple Swift kurzus 3. gyakorlat Készítette: Jánki Zoltán Richárd Dátum: 2016.09.20. Apple Swift kurzus 3. gyakorlat Kollekciók: Tömb: - let array = [] - üres konstans tömb - var array = [] - üres változó tömb - var array = [String]()

Részletesebben

Programok értelmezése

Programok értelmezése Programok értelmezése Kód visszafejtés. Izsó Tamás 2016. szeptember 22. Izsó Tamás Programok értelmezése/ 1 Section 1 Programok értelmezése Izsó Tamás Programok értelmezése/ 2 programok szemantika értelmezése

Részletesebben

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. február 18. Minimum és maximumkeresés u s i n g n a m e s p a c e s t d ; i n t main ( ) { c o u t

Részletesebben

Kiterjesztések sek szemantikája

Kiterjesztések sek szemantikája Kiterjesztések sek szemantikája Példa D Integer = {..., -1,0,1,... }; D Boolean = { true, false } D T1... T n T = D T 1... D Tn D T Az összes függvf ggvény halmaza, amelyek a D T1,..., D Tn halmazokból

Részletesebben

A programozás alapjai

A programozás alapjai A programozás alapjai Változók A számítógép az adatokat változókban tárolja A változókat alfanumerikus karakterlánc jelöli. A változóhoz tartozó adat tipikusan a számítógép memóriájában tárolódik, szekvenciálisan,

Részletesebben

Programozás alapjai. 5. előadás

Programozás alapjai. 5. előadás 5. előadás Wagner György Általános Informatikai Tanszék Cserélve kiválasztásos rendezés (1) A minimum-maximum keresés elvére épül. Ismétlés: minimum keresés A halmazból egy tetszőleges elemet kinevezünk

Részletesebben

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás 4.11. A C előfeldolgozó rendszer A fordítás első lépése a C esetében a különböző nyelvi kiterjesztések feldolgozása: másik állomány tartalmának

Részletesebben

Objektumorientált Programozás III.

Objektumorientált Programozás III. Objektumorientált Programozás III. Vezérlési szerkezetek ismétlés Matematikai lehetőségek Feladatok 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő

Részletesebben

Algoritmizálás + kódolás C++ nyelven és Pascalban

Algoritmizálás + kódolás C++ nyelven és Pascalban Algoritmizálás + kódolás nyelven és ban Motiváció A Programozási alapismeretek tárgyban az algoritmizáláshoz struktogramot, a kódoláshoz nyelvet használunk, a Közismereti informatikában (a közoktatásban

Részletesebben

Szoftvertervezés és -fejlesztés I.

Szoftvertervezés és -fejlesztés I. Szoftvertervezés és -fejlesztés I. Operátorok Vezérlési szerkezetek Gyakorlás 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik.

Részletesebben

A C programozási nyelv II. Utasítások. A függvény.

A C programozási nyelv II. Utasítások. A függvény. A C programozási nyelv II. Utasítások. A függvény. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv II (Utasítások, fuggvények) CBEV2 / 1 Kifejezés utasítás Kifejezés utasítás, blokk

Részletesebben

Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 3. előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 3. előadás Vezérlési szerkezetek Elágazás Gyakran előfordul, hogy meg kell vizsgálnunk egy állítást, és attól függően, hogy igaz vagy hamis, a programnak más-más

Részletesebben

6. fejezet: Ciklusok

6. fejezet: Ciklusok 6. fejezet: Ciklusok Mint a nyelvekben általában, itt is léteznek ciklusok. Az alapvető három ciklus-típus: elöltesztelő, hátultesztelő és számláló. Lássuk ezeket sorban! Elöltesztelő = while. A while

Részletesebben

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE 2015-16 Classic Empire - A turn Based Wargame Classic Empire is a real time, multiplayer, Internet-based game, featuring military, diplomatic, and economic

Részletesebben

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai A programozás alapjai 1 1. előadás Híradástechnikai Tanszék Amiről szólesz: A tárgy címe: A programozás alapjai A számítógép részegységei, alacsony- és magasszintű programnyelvek, az imperatív programozási

Részletesebben

Stack Vezérlés szerkezet Adat 2.

Stack Vezérlés szerkezet Adat 2. Stack Vezérlés szerkezet Adat 2. Kód visszafejtés. Izsó Tamás 2013. november 14. Izsó Tamás Stack Vezérlés szerkezet Adat 2./ 1 Változó típusú paraméterekátadása 1. #include < s t d i o. h> int64 myfunc

Részletesebben

2. Visszalépéses keresés

2. Visszalépéses keresés 2. Visszalépéses keresés Visszalépéses keresés A visszalépéses keresés egy olyan KR, amely globális munkaterülete: egy út a startcsúcsból az aktuális csúcsba (az útról leágazó még ki nem próbált élekkel

Részletesebben

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK Sapientia EMTE 2015-16 1 Felülnézet 1 Feltételes fordítás #if, #else, #elif, #endif, #ifdef, #ifndef stb. Felülnézet 2 #include: hatására a preprocesszor

Részletesebben

Internet programozása. 3. előadás

Internet programozása. 3. előadás Internet programozása 3. előadás Áttekintés Hogyan használjuk az if szerkezetet arra, hogy bizonyos sorok csak adott feltételek teljesülése mellett hajtódjanak végre? Hogyan adhatunk meg csak bizonyos

Részletesebben

Komputeralgebra Rendszerek

Komputeralgebra Rendszerek Komputeralgebra Rendszerek Programozás Czirbusz Sándor ELTE IK, Komputeralgebra Tanszék 2014. február 23. TARTALOMJEGYZÉK 1 of 28 TARTALOMJEGYZÉK I 1 TARTALOMJEGYZÉK 2 Értékadás MAPLE -ben SAGE -ben 3

Részletesebben

Szoftver karbantartási lépések ellenőrzése

Szoftver karbantartási lépések ellenőrzése Szoftverellenőrzési technikák (vimim148) Szoftver karbantartási lépések ellenőrzése Majzik István Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék http://www.inf.mit.bme.hu/

Részletesebben

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.10.. -1- Mit tudunk már? Típus fogalma char, int, float,

Részletesebben

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május)

Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május) Megoldások a mintavizsga kérdések a VIMIAC04 tárgy ellenőrzési technikák részéhez kapcsolódóan (2017. május) Teszt kérdések 1. Melyik állítás igaz a folytonos integrációval (CI) kapcsolatban? a. Folytonos

Részletesebben

Haladó DBMS ismeretek 1

Haladó DBMS ismeretek 1 Haladó DBMS ismeretek 1 Hasznos információk A tantárgy weboldala: it.inf.unideb.hu/honlap/halado_oracle1 Oracle Junior képzés Gyakorlatok és a neptun Gyakorlat követelmények Ajánlott irodalom Juhász István

Részletesebben

A PROGRAMOZÁS ALAPJAI 3. Készítette: Vénné Meskó Katalin

A PROGRAMOZÁS ALAPJAI 3. Készítette: Vénné Meskó Katalin 1 A PROGRAMOZÁS ALAPJAI 3 Készítette: Vénné Meskó Katalin Információk 2 Elérhetőség meskokatalin@tfkkefohu Fogadóóra: szerda 10:45-11:30 Számonkérés Időpontok Dec 19 9:00, Jan 05 9:00, Jan 18 9:00 egy

Részletesebben

C programozás. 1 óra Bevezetés

C programozás. 1 óra Bevezetés C programozás 1 óra Bevezetés A C nyelv eredete, fő tulajdonságai 1. Bevezető C nyelv alapelemei többsége a BCPL (Basic Combined Programming Language {1963}) Martin Richards B nyelv Ken Thompson {1970}

Részletesebben

Programozási nyelvek JAVA EA+GY 1. gyakolat

Programozási nyelvek JAVA EA+GY 1. gyakolat Programozási nyelvek JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2018/2019. tavaszi félév Tartalom 1 A Java alapjai 2 Java program

Részletesebben

Mintavételes szabályozás mikrovezérlő segítségével

Mintavételes szabályozás mikrovezérlő segítségével Automatizálási Tanszék Mintavételes szabályozás mikrovezérlő segítségével Budai Tamás budai.tamas@sze.hu http://maxwell.sze.hu/~budait Tartalom Mikrovezérlőkről röviden Programozási alapismeretek ismétlés

Részletesebben

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14. Informatika 1 2011 Második előadás, vezérlési szerkezetek Szabó Adrienn 2011. szeptember 14. Tartalom Algoritmusok, vezérlési szerkezetek If - else: elágazás While ciklus For ciklus Egyszerű típusok Összetett

Részletesebben

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3) Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Mit tudunk már? Típus fogalma char, int, float, double változók deklarációja operátorok (aritmetikai, relációs, logikai,

Részletesebben

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010

Programozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010 Programozási technikák Pál László Sapientia EMTE, Csíkszereda, 2009/2010 Előadás tematika 1. Pascal ismétlés, kiegészítések 2. Objektum orientált programozás (OOP) 3. Delphi környezet 4. Komponensek bemutatása

Részletesebben

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3) Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Függvények C program egymás mellé rendelt függvényekből áll. A függvény (alprogram) jó absztrakciós eszköz a programok

Részletesebben

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2) Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.05. -1- Függvények C program egymás mellé rendelt függvényekből

Részletesebben

2. Visszalépéses stratégia

2. Visszalépéses stratégia 2. Visszalépéses stratégia A visszalépéses keres rendszer olyan KR, amely globális munkaterülete: út a startcsúcsból az aktuális csúcsba (ezen kívül a még ki nem próbált élek nyilvántartása) keresés szabályai:

Részletesebben

Informatika terméktervezőknek

Informatika terméktervezőknek Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások

Részletesebben

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak. Párhuzamos programok Legyen S parbegin S 1... S n parend; program. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak. Folyamat

Részletesebben

Bonyolultságelmélet. Monday 26 th September, 2016, 18:50

Bonyolultságelmélet. Monday 26 th September, 2016, 18:50 Bonyolultságelmélet Monday 26 th September, 2016, 18:50 A kiszámítás modelljei 2 De milyen architektúrán polinom? A kiszámításnak számos (matematikai) modellje létezik: Általános rekurzív függvények λ-kalkulus

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java2 / 1 Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2009. 02. 09. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve

Részletesebben

Erdélyi Magyar TudományEgyetem (EMTE

Erdélyi Magyar TudományEgyetem (EMTE TARTALOM: Általánosságok Algoritmusok ábrázolása: Matematikai-logikai nyelvezet Pszeudokód Függőleges logikai sémák Vízszintes logikai sémák Fastruktúrák Döntési táblák 1 Általánosságok 1. Algoritmizálunk

Részletesebben

LabView Academy. 4. óra párhuzamos programozás

LabView Academy. 4. óra párhuzamos programozás LabView Academy 4. óra párhuzamos programozás Ellenőrző kérdések Hogyan lehet letiltani az automatikus hibakezelés funkciót? a) Engedélyezzük az Execution highlighting ot b) A subvi error out cluster-jét

Részletesebben

Alap fatranszformátorok II

Alap fatranszformátorok II Alap fatranszformátorok II Vágvölgyi Sándor Fülöp Zoltán és Vágvölgyi Sándor [2, 3] közös eredményeit ismertetjük. Fogalmak, jelölések A Σ feletti alaptermek TA = (T Σ, Σ) Σ algebráját tekintjük. Minden

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak

Részletesebben

Neumann János Tehetséggondozó Program Gráfalgoritmusok II.

Neumann János Tehetséggondozó Program Gráfalgoritmusok II. Neumann János Tehetséggondozó Program Gráfalgoritmusok II. Horváth Gyula horvath@inf.elte.hu 1. A szélességi bejárás alkalmazásai. Nyilvánvaló, hogy S(0) = {r}. Jelölés: D(p) = δ(r, p) Nyilvánvaló, hogy

Részletesebben

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje 1. Alapfogalmak 1.1. Algoritmus Az algoritmus olyan elemi műveletekből kompozíciós szabályok szerint felépített összetett művelet, amelyet megadott feltételt teljesítő bemeneti adatra végrehajtva, a megkívánt

Részletesebben

Bevezetés az informatikába

Bevezetés az informatikába Bevezetés az informatikába 3. előadás Dr. Istenes Zoltán Eötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék Matematikus BSc - I. félév / 2008 / Budapest Dr.

Részletesebben

Dr. Schuster György február / 32

Dr. Schuster György február / 32 Algoritmusok és magvalósítások Dr. Schuster György OE-KVK-MAI schuster.gyorgy@kvk.uni-obuda.hu 2015. február 10. 2015. február 10. 1 / 32 Algoritmus Alapfogalmak Algoritmus Definíció Algoritmuson olyan

Részletesebben

Szoftvertechnológia alapjai Java előadások

Szoftvertechnológia alapjai Java előadások Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html A mai előadás tartalma: Miért pont Java?

Részletesebben

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Bánsághi Anna 2014 Bánsághi Anna 1 of 68 IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 3. ELŐADÁS - PROGRAMOZÁSI TÉTELEK 2014 Bánsághi Anna 1 of 68 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív

Részletesebben

Korlátos modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék

Korlátos modellellenőrzés. dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék Korlátos modellellenőrzés dr. Majzik István BME Méréstechnika és Információs Rendszerek Tanszék 1 Hol tartunk most? Alacsony szintű formalizmusok (KS, LTS, KTS) Magasabb szintű formalizmusok Temporális

Részletesebben

Python bevezető foglalkozás Python bevezető foglalkozás

Python bevezető foglalkozás Python bevezető foglalkozás Python bevezető foglalkozás program, programozás, programnyelvek a Python nyelv és az IDLE környezet változók és adattípusok konzol input és output (input(), print()) vezérlési szerkezetek (if/else, while)

Részletesebben

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem C# nyelv alapjai Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem Objektumorientált programozás C# alapokon tananyag Tartalom Bevezetés Lokális változó Utasítások Szójáték Why do all real

Részletesebben

A kódgenerálás helye a fordítási folyamatban. Kódgenerálás I. (kifejezések és vezérlési szerkezetek) A kódgenerálás feladata. Ebben az előadásban...

A kódgenerálás helye a fordítási folyamatban. Kódgenerálás I. (kifejezések és vezérlési szerkezetek) A kódgenerálás feladata. Ebben az előadásban... A kódgenerálás helye a fordítási folyamatban Forrásprogram Forrás-kezelő (source handler) Kódgenerálás I. (kifejezések és vezérlési szerkezetek) Fordítóprogramok előadás (A,C,T szakirány) 2008. őszi félév

Részletesebben

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás

Algoritmusok Tervezése. 4. Előadás Visual Basic 1. Dr. Bécsi Tamás Algoritmusok Tervezése 4. Előadás Visual Basic 1. Dr. Bécsi Tamás Bevezetés A BASIC (Beginner s All-purpose Symbolic Instruction Code) programnyelvet oktatási célokra hozták létre 1964-ben. Az általános

Részletesebben

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe Mechatronika és mikroszámítógépek 2017/2018 I. félév Bevezetés a C nyelvbe A C programozási nyelv A C egy általános célú programozási nyelv, melyet Dennis Ritchie fejlesztett ki Ken Thompson segítségével

Részletesebben

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y. Algoritmuselmélet Mélységi keresés és alkalmazásai Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 9. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet

Részletesebben

Programozási nyelvek Python

Programozási nyelvek Python Programozási nyelvek Python A nyelv története és jellemzői 2 A nyelv története Tervező Guido van Rossum (1956, Hollandia) Befolyásoló nyelvek ABC (pl. blokkok jelölése behúzással); Modula-3; C; C++; Unix

Részletesebben

Delphi programozás IV.

Delphi programozás IV. Delphi programozás IV. Szöveg konvertálása egész számmá A Turbo Delphi többféle lehetőséget biztosít arra, hogy egy szöveges változó tartalmát egész számmá konvertáljunk. A konvertálandó szövegnek egy

Részletesebben

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva! A PL/SQL alapelemei Karakterkészlet Az angol ABC kis- és nagybetűi: a-z, A-Z Számjegyek: 0-9 Egyéb karakterek: ( ) + - * / < > =! ~ ^ ; :. ' @ %, " # $ & _ { }? [ ] Szóköz, tabulátor, kocsivissza A kis-

Részletesebben

Fordítóprogramok felépítése, az egyes programok feladata. A következő jelölésmódot használjuk: program(bemenet)(kimenet)

Fordítóprogramok felépítése, az egyes programok feladata. A következő jelölésmódot használjuk: program(bemenet)(kimenet) Fordítóprogramok. (Fordítóprogramok felépítése, az egyes komponensek feladata. A lexikáliselemző működése, implementációja. Szintaktikus elemző algoritmusok csoportosítása, összehasonlítása; létrehozásuk

Részletesebben

C programozási nyelv

C programozási nyelv C programozási nyelv Előfeldolgozó utasítások Dr Schuster György 2011 május 3 Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 1 / 15 A fordítás menete Dr Schuster György

Részletesebben

ABB Teach Pendant programozás segédlet

ABB Teach Pendant programozás segédlet ABB Teach Pendant programozás segédlet Készítette: Gyöngyösi Balázs Kiadja a Robert Bosch Mechatronikai Intézeti Tanszék Miskolc, 2017. Tartalomjegyzék Tartalomjegyzék... 1 1. Teach Pendant és az érintőképernyő

Részletesebben

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar Programozás I. 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Primitív típusok Típus neve Érték Alap érték Foglalt tár Intervallum byte Előjeles egész 0 8 bit

Részletesebben

Intelligens Rendszerek Elmélete IRE 4/32/1

Intelligens Rendszerek Elmélete IRE 4/32/1 Intelligens Rendszerek Elmélete 4 IRE 4/32/1 Problémamegoldás kereséssel http://nik.uni-obuda.hu/mobil IRE 4/32/2 Egyszerű lények intelligenciája? http://www.youtube.com/watch?v=tlo2n3ymcxw&nr=1 IRE 4/32/3

Részletesebben

Occam 1. Készítette: Szabó Éva

Occam 1. Készítette: Szabó Éva Occam 1. Készítette: Szabó Éva Párhuzamos programozás Egyes folyamatok (processzek) párhuzamosan futnak. Több processzor -> tényleges párhuzamosság Egy processzor -> Időosztásos szimuláció Folyamatok közötti

Részletesebben

Ismerkedés a Python programnyelvvel. és annak micropython változatával

Ismerkedés a Python programnyelvvel. és annak micropython változatával Ismerkedés a Python programnyelvvel és annak micropython változatával A Python programozási nyelv története Az alapötlet 1980-ban született, 1989 decemberében kezdte el fejleszteni Guido van Rossum a CWI-n

Részletesebben

Tuesday, March 6, 12. Hasító táblázatok

Tuesday, March 6, 12. Hasító táblázatok Hasító táblázatok Halmaz adattípus U (kulcsuniverzum) K (aktuális kulcsok) Függvény adattípus U (univerzum) ÉT (értelmezési tartomány) ÉK (érték készlet) Milyen az univerzum? Közvetlen címzésű táblázatok

Részletesebben

Labor gyakorlat Mikrovezérlők

Labor gyakorlat Mikrovezérlők Labor gyakorlat Mikrovezérlők ATMEL AVR ARDUINO 1. ELŐADÁS BUDAI TAMÁS Tartalom Labor 2 mikrovezérlők modul 2 alkalom 1 mikrovezérlők felépítése, elmélet 2 programozás, mintaprogramok Értékelés: a 2. alkalom

Részletesebben

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3) Programozás alapjai C nyelv 5. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.17. -1- Tömbök Azonos típusú adatok tárolására. Index

Részletesebben

Szkriptnyelvek. 1. UNIX shell

Szkriptnyelvek. 1. UNIX shell Szkriptnyelvek 1. UNIX shell Szkriptek futtatása Parancsértelmez ő shell script neve paraméterek shell script neve paraméterek Ebben az esetben a szkript tartalmazza a parancsértelmezőt: #!/bin/bash Szkriptek

Részletesebben

Máté: Assembly programozás

Máté: Assembly programozás Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type osztály... szegmens sz_név ENDS sz_név a szegmens (szelet) neve. A fordító az azonos nevű szegmens szeleteket úgy tekinti, mintha folyamatosan,

Részletesebben

Algoritmusok helyességének bizonyítása. A Floyd-módszer

Algoritmusok helyességének bizonyítása. A Floyd-módszer Algoritmusok helyességének bizonyítása A Floyd-módszer Algoritmusok végrehajtása Egy A algoritmus esetében a változókat három változótípusról beszélhetünk, melyeket az X, Y és Z vektorokba csoportosítjuk

Részletesebben

Felhasználó által definiált adattípus

Felhasználó által definiált adattípus Felhasználó által definiált adattípus C++ Izsó Tamás 2017. február 24. Izsó Tamás Felhasználó által definiált adattípus/ 1 Irodalom Izsó Tamás Felhasználó által definiált adattípus/ 2 Programtervezési

Részletesebben

S z á m í t ó g é p e s a l a p i s m e r e t e k

S z á m í t ó g é p e s a l a p i s m e r e t e k S z á m í t ó g é p e s a l a p i s m e r e t e k 7. előadás Ami eddig volt Számítógépek architektúrája Alapvető alkotóelemek Hardver elemek Szoftver Gépi kódtól az operációs rendszerig Unix alapok Ami

Részletesebben

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. március 3. Függvények Mi az a függvény (function)? Programkód egy konkrét, azonosítható, paraméterezhet, újrahasznosítható blokkja Miért

Részletesebben

Operációs Rendszerek II. labor. 2. alkalom

Operációs Rendszerek II. labor. 2. alkalom Operációs Rendszerek II. labor 2. alkalom Mai témák (e)grep Shell programozás (részletesebben, példákon keresztül) grep Alapvető működés: mintákat keres a bemeneti csatorna (STDIN vagy fájl) soraiban,

Részletesebben

Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása

Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása Programozás alapjai 5. gyakorlat Vezérlési szerkezetek egymásba ágyazása 1. feladat: Eldönteni egy számról, hogy pozitív, negatív vagy 0. Próbálja megoldani a feladatot switch szerkezettel is. Mikor használható

Részletesebben

A C# programozási nyelv alapjai

A C# programozási nyelv alapjai A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet

Részletesebben

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >> I. Alapok Interaktív shell-ben vagy shell-scriptben megadott karaktersorozat feldolgozásakor az első lépés a szavakra tördelés. A szavakra tördelés a következő metakarakterek mentén zajlik: & ; ( ) < >

Részletesebben

Adatszerkezetek és algoritmusok

Adatszerkezetek és algoritmusok 2009. november 13. Ismétlés El z órai anyagok áttekintése Ismétlés Specikáció Típusok, kifejezések, m veletek, adatok ábrázolása, típusabsztakció Vezérlési szerkezetek Függvények, paraméterátadás, rekurziók

Részletesebben

Irányítástechnika 1. 9. Elıadás. PLC-k programozása

Irányítástechnika 1. 9. Elıadás. PLC-k programozása Irányítástechnika 1 9. Elıadás PLC-k programozása Irodalom - Helmich József: Irányítástechnika I, 2005 - Zalotay Péter: PLC tanfolyam - Jancskárné Anweiler Ildikó: PLC programozás az IEC 1131-3 szabvány

Részletesebben

Adminisztrációs feladatok Strukturált programok A C programnyelv elemei

Adminisztrációs feladatok Strukturált programok A C programnyelv elemei Strukturált C-Strukturált Egyéb elemek Strukturált C-Strukturált Egyéb elemek Adminisztrációs feladatok Strukturált programok A C programnyelv elemei A programozás alapjai. álózati Rendszerek és Szolgáltatások

Részletesebben

2018, Diszkrét matematika

2018, Diszkrét matematika Diszkrét matematika 3. előadás mgyongyi@ms.sapientia.ro Sapientia Egyetem, Matematika-Informatika Tanszék Marosvásárhely, Románia 2018, őszi félév Miről volt szó az elmúlt előadáson? számtartományok: természetes

Részletesebben

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED AWK - szintaxis, vezérlési szerkezetek Operációs rendszerek 11. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Csuvik

Részletesebben

AWK programozás, minták, vezérlési szerkezetek

AWK programozás, minták, vezérlési szerkezetek 10 AWK programozás, minták, vezérlési szerkezetek AWK futtatási módok AWK parancs, közvetlen programkódmegadás: awk 'PROGRAMKÓD' FILE példa: ls -l awk '{print $1, $5}' a programkód helyére minden indentálás

Részletesebben

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

Programozási nyelvek a közoktatásban alapfogalmak I. előadás Programozási nyelvek a közoktatásban alapfogalmak I. előadás Szempontok Programozási nyelvek osztályozása Felhasználói kör (amatőr, professzionális) Emberközelség (gépi nyelvektől a természetes nyelvekig)

Részletesebben

Teszttervezés. Majzik István, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék

Teszttervezés. Majzik István, Micskei Zoltán. Integrációs és ellenőrzési technikák (VIMIA04) Méréstechnika és Információs Rendszerek Tanszék Integrációs és ellenőrzési technikák (VIMIA04) Teszttervezés Majzik István, Micskei Zoltán Méréstechnika és Információs Rendszerek Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és

Részletesebben

Labor gyakorlat Mikrovezérlők

Labor gyakorlat Mikrovezérlők Labor gyakorlat Mikrovezérlők ATMEL AVR ARDUINO 1. ELŐADÁS BUDAI TAMÁS 2015. 09. 06. Tartalom Labor 2 mikrovezérlők modul 2 alkalom 1 mikrovezérlők felépítése, elmélet 2 programozás, mintaprogramok Értékelés:

Részletesebben

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t.. A Név: l 2014.04.09 Neptun kód: Gyakorlat vezető: HG BP MN l 1. Adott egy (12 nem nulla értékû elemmel rendelkezõ) 6x7 méretû ritka mátrix hiányos 4+2 soros reprezentációja. SOR: 1 1 2 2 2 3 3 4 4 5 6

Részletesebben

Táblázatok fontosabb műveletei 1

Táblázatok fontosabb műveletei 1 Táblázatok fontosabb műveletei 1 - - Soros táblázat procedure BESZÚR1(TÁBLA, újelem) - - beszúrás soros táblázatba - - a táblázatot egy rekordokat tartalmazó dinamikus vektorral reprezentáljuk - - a rekordok

Részletesebben

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere 2012. április 10. A PROGAMOZÁS ALAPJAI 1 Vitéz András egyetemi adjunktus BME Híradástechnikai Tanszék vitez@hit.bme.hu Miről lesz ma szó? alaki szabályok használata - mintapélda használata - mintapélda

Részletesebben