integrisano razvojno okruŽenje – v deo poglavlje 5 - v deo... · okruŽenje – v deo kompaktor....

45
1 INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Kompaktor

Upload: lytram

Post on 27-May-2018

219 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

1

INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO

Kompaktor

Page 2: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

2

Definicija, ulaz i izlaz KompaktoraDef.: Kompaktor je uslužni program za mašinski zavisnu optimizaciju.Ulaz: memorijska struktura, koju formira povezivač nakon svog prvog prolaza.Izlaz: kompaktovana memorijska predstava povezanog programa, nad kojom nastavlja rad drugi prolaz povezivača.

Page 3: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

3

Kompaktovanje = optimizacija povezanog programa

Ulaz u kompaktor je program povezan na slimboličkom nivou, koji se dobija učitavanjem labela, promenljivih i mašinskog koda svih objektnih datoteka u memoriju.Reference u instrukcijama, na podatke i druge instrukcije, su i dalje simboličke, odnosno preko labela, zato da bi se izbeglo preračunavanje adresa tokom kompaktovanja koda, koje se svodi na preuređivanje koda (npr. promena redosleda instrukcija).

Linker,I prolaz Kompaktor Linker,

II prolaz

Page 4: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

4

Funkcija KompaktoraOsnovni zadatak kompaktora je daminimizira broj mašinskih instrukcija, tako što iterativno menja kod i uklanja nepotrebne mašinske instrukcije (pre svega NOP).Povoljna posledica ove minimizacije je ubrzanje izvršenja programa, što inačenije primarni cilj.

Page 5: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

5

Komponente Kompaktora

niz tehnika kompaktovanja koda, nižeg i višeg nivoa

model programa model procesora

Page 6: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

6

Program, Kontekst, Trajektorija,Značenje (funkcionalnost)

Program: niz instrukcija, čiji objekti su resursi procesora (registri, U-I prolazi, i memorijske lokacije). Kontekst: skup sadržaja objekata.Trajektorija: niz konteksta C0, C1, ... , Ci koji je posledica izvršenja niza instrukcija.Značenje: niz spoljnih rezultata (podataka i akcija), tkzv. izlaza, koji su proizvedeni izvršenjem programa.

Page 7: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

7

Osnovni zahtev:očuvati semantiku programa!

Osnovni zahtev koji kompaktor mora da zadovolji je da u cilju optimizacije sme da menja program, tj. njegove tragove i trajaktoriju, ali nesme da promeni njegovo orginalno značenje (njegovu funkcionalnost).

Page 8: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

8

Programski segment(basic block)

Linearni programski segment ili osnovni blok programa je niz instrukcija koji započinje labelom a završava se instrukcijom grananja.Svaki asemblerski program se može razložiti na skup programskih segmenata.

Page 9: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

9

Kompaktor, faza analize

U fazi analize, kompaktor na osnovu polaznog asemblerskog koda, koji treba kompaktovati, i ugrađenog modela procesora (koji je dat u obliku modela njegovih mašinskih instrukcija), formira model polaznog programa.

PolazniProgram

Kompaktor,analiza

ModelProcesora

ModelPrograma

Page 10: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

10

Model polaznog programa

Model se sastoji od skupa instanci klasa instrukcija (izvedenih iz osnovne klase CInstruction), koji je sortiran po tkzv. tački izvršenja, nekoliko kolekcija labela (programske labele, labele podataka, simboličke konstante i labele skokova), kao i jedne liste objekata programskih segmenata (instance klase CProgramSegment).

Kompaktor Segmenti

Instrukcije Tabele Simbola

Page 11: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

11

Ugrađeni model procesora MASxSkup klasa izvedenih iz CInstruction.Za rad kompaktora ključna su dva atributa osnovne klase, i to:a) tačka izvršenja instrukcije (m_ExecutionPoint), tj. njena adresa ib) niz objekata klase CObject, koje instrukcija koristi na neki način (m_Objects[]).

Page 12: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

12

CLOAD_HIGHER_PART_OF_ACCU_IMMEDIATELY_WITH_10_BIT_VALUE CSTORE_ACCUMULATOR_TO_REGISTER_WITH_SHIFT

CLOAD_REGISTER_WITH_MEMORY

CSTORE_ACCUMULATOR_WITH_SHIFT

CLOAD_LOWER_PART_OF_ACCU_IMMEDIATELY_WITH_10_BIT_VALUE

CLOAD_ACCUMULATOR_WITH_REGISTER

CDIRECT_HARDWARE_LOOP

CINDIRECT_HARDWARE_LOOP

CDIRECT_JUMP

CDIRECT_VECTOR_REPEAT

CINDIRECT_VECTOR_REPEAT

CDC_33333_DIRECTIVE

CMOVE_MEMORY_ACC

CNOP

CTASK

CRESET_LATCHED_FLAGS

CHALT

m_ExecutionPoint: int m_LineNumber: int m_FileName: char* m_InsideSkipZone: int m_InsideJumpZone: int m_InsideHardLoop: int m_InsideHaltZone: int m_Droppable: int m_Skippable: int m_Swappable: int m_NumberOfObjects: unsigned charm_Comment: char*

CMOVE_MEMORY_TO_MEMORY_VIA_ACCUMULATOR

CInstruction

CCONTINUE_HARDWARE_LOOP

CBREAK_HARDWARE_LOOP

CJUMP_VIA_SCHEDULER

CINDIRECT_JUMP

CCONDITIONAL_SKIP

CMAC_GROUP_WITH_D1_STORE_AND_D0_D1_FEEDBACK

CMAC_GROUP_WITH_D1_FEEDBACK

CMAC_GROUP_WITH_D0_FEEDBACK

CMAC_GROUP_WITH_D0_STORE_AND_D0_D1_FEEDBACK CMAC_GROUP_WITH_D0_STORE_AND_D0_FEEDBACK

CMAC_GROUP_WITH_D1_STORE_AND_D1_FEEDBACK

CMAC_GROUP_WITH_D0_D1_FEEDBACK

CMAC_GROUP_WITH_DIRECT_ACCESS_TO_BOTH_DATA_AREAS

CMAC_GROUP

CCONDITIONAL_GROUP

CALU_GROUP

CALU_GROUP_WITH_D0_FEEDBACK_AND_IMMEDIATE_D1_INPUT

CALU_GROUP_WITH_DIRECT_FEEDBACK_TO_D1_INPUT

CALU_GROUP_WITH_INDEXSED_ADDRESSING

CALU_GROUP_WITH_TWO_REGISTERS_FEEDBACKS

GET_LOW_BITS_OF_MULTIPLICATION_IN_PREVIOUS_INSTRUCTION

Page 13: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

13

Model resursa – Klasa CObject

Ključni atributi objekta su: faza protočne obrade (m_PipelineStage) u kojoj se

objekat koristi, način korišćenja objekta: čitanje ili upis (m_Action), i tip objekta: akumulator, registar, itd.

(m_ObjectType).

CObjectType CAction

CPipelineStage

CObject m_index : int = (-1)

11

1 11 1

Page 14: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

14

Model toka upravljanja(control flow model)

Tok upravljanja se modelira pomoću sledeće tri klase: Osnovni segment, CBasicProgramSegment Segment, CProgramSegment Virtuelni segment, CVirtualProgramSegment

Page 15: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

15

Dijagram klasa za modeliranje toka upravljanja

1

(list<pair<multiset<CobjectUser, ClessObjectUser>>)

(list<CUsageZone*>) (set<CObject,less<CObject>>)

CVirtualProgramSegment

(list<CVirtualProgramSegment*>)(list<CVirtualProgramSegment*>)

CProgramSegment

CVectorSegment CHardLoopSegment

(pair<list<CInstruction*>,int>)

CBasicProgramSegment m_StartAddress : int = (startAddress) m_EndAddress : int = (endAddress)

1

1

m_ObjectUsers

1

8 m_UsageZones

1

1m_UsedObjects

1 1

1 1

m_IncomingPath

m_OutgoingPath

1m_PreviousSegments

1

1

m_VirtualProgramSegments1

1

1

m_RepeatedInstructions

(list<CInstruction*>)

1

m_NextSegments

Page 16: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

16

Osnovni programski segmentModelira jedan izolovan programski segment.Njegovi atributi, sa stanovišta toka upravljanja, su početna adresa segmenta mStartAddress i završna adresa segmenta mEndAddress.

Page 17: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

17

Programski segmentModelira programski segment kao

sastavni deo programa.Osnovna klasa se proširuje sa tri atributa: lista prethodnih programskih segementa

mPreviousSegments, lista narednih segmenata mNextSegments, i lista virtuelnih programskih segmenata

mVirtualProgramSegments.

Page 18: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

18

Virtuelni programski segmentVirtuelni programski segment je nelinearni segment (sadrži i instrukcije skoka) koji obuhvata posmatrani linearni programski segment.Virtuelni segment je deo traga, koji čine segment predak i onoliko asemblerskih instrukcija pre i posle segmenta predak koliko faza postoji u protočnoj obradi (to se naziva “dubina” protočne obrade).

Page 19: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

19

Segment i Virtuelni segmenti

Programski segment

Dolazne putanje Odlazne putanje

Jedan mogući virtuelniprogramski segment

Page 20: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

20

Prostor Objekti-Vreme(objects-time space)

Model programa iz jednodimenzionalnog adresnog prostora se transformiše u model u višedimenzionalnom prostoru objekti-vreme.U tom prostoru su pojedine dimenzije vremenski redosledi korišćenja pojedinih objekata.

Page 21: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

21

Model programa uprostoru objekti-vreme

Model se konstruiše pomoću dva atributa osnovne klase programskog segmenta CBasicProgramSegment: skup objekata korišćenih od strane

instrukcija u segmentu m_UsedObjects i skup korisnika objekata m_ObjectUsers

predstavljenih instancama klase CObjectUser, koji ustvari predstavlja jedanprogramski segment u prostoru objekti-vreme.

Page 22: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

22

Klase CInstruction, CObjectUser i CAction

CObjectUser m_ExecutionPoint : int = (-1)m_AccessPoint : int = (-1) m_ObjectIndex : int = (-1)

CInstruction

CAction

1

1

1

0..1

Page 23: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

23

Adresni i prostor objekti-vreme

Jedna moguća dolazna putanja (120) 30

LAB1

ZR0 (G0P20) = YC0

Telo programskog segment pretka

(031) 31 CC0 = AC0 + AC3

Korisnici objekta

(032) 32 NOP

31R

34R

36R

36W

41W

C0

LAB2

Granice segmenta

(192) 33 PC0 = AC0 * Z10 (193) 34 NOP(194) 35 NOP

Jedna moguća odlazna putanja

realnaadresa

"logička"adresa

Uređeno po vremenu pristupa

Page 24: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

24

Faza sinteze = Kompaktovanje

Faza sinteze, odnosno kompaktovanja, u kojoj se polazni program bolje prilagođava protočnoj obradi, tako što se međusobno nezavisni zadaci “učešljavaju” (interleave).

ModelPrograma

Kompaktor,sinteza

ModelProcesora

KompaktanProgram

Page 25: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

25

Zadaci sa podelom vremena izadaci sa podelom resursa

U slučaju zadataka sa podelom vremena potrebno je smenjivati njihov kontekst (context switching).U slučaju zadataka sa podelom resursa nema potrebe za deljenjem vremena, tj. smenom konteksta.Učešljavanjem takvih zadataka može se dobiti visoko optimizovan kod.

Page 26: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

26

Učešljavanje instrukcija(eng. interleaving)zadatak A:A1, NOP, A2, NOP ... , NOP, Anzadatak B:B1, NOP, B2, NOP... , NOP, Bn

zadatak A+B: A1, NOP, A2, NOP ... , NOP, An, B1, NOP, B2, NOP... , NOP, Bn

zadatak A||B: A1, B1, A2, B2, ... , An, Bn

Page 27: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

27

Zadatak KompaktoraPred kompaktor se ustvari postavlja opšti zadatak da bilo koji niz instrukcija:

... Ii ... NOP ... Ij ... NOP ... Ik ... NOPkompaktuje tako što će pronaći minimalan

niz instrukcija ekvivalentnog značenja.Problem kompaktovanja koda je širi od problema učešljavanja, pošto je dozvoljeno korišćenje bilo kojih instrukcija.

Page 28: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

28

Tehnike kompaktovanja kodaKompaktor imitira praksu ručnog pisanja koda skupom tehnika koje su hijerarhijski organizovane u dva nivoa: tehnike nižeg nivoa rade na mikro nivou, tj.

nad jednom instrukcijom ili nad parom instrukcija

tehnike višeg nivoa koje rade na marko nivou, tj. nad segmentima odnosno grupama instrukcija.

Page 29: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

29

Tehnike nižeg nivoaZAMENI redosled zadate instrukcije sa zadatim NOP, na postojećim adresama, unutar segmenta,IZBACI zadati NOP,ZAMENI-PREDHODNI: zameni redosled zadate instrukcije segmenta predak sa zadatim NOP iz predhodnog segmenta,ZAMENI-NAREDNI: zameni redosled zadate instrukcije segmenta predak sa zadatim NOP iz narednog segmenta, iPREIMENUJ resurs (akumulator) sa korišćenog imena na slobodno,MUTIRAJ instrukciju.

Page 30: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

30

Tehnike višeg nivoaTRAŽI-UNAPRED,TRAŽI-UNAZAD,KOMPAKTUJ-SA-PREDHODNIM, iKOMPAKTUJ-SA-NAREDNIM.

Page 31: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

31

ZAMENI instrukciju i NOP

Ova tehnika pokušava da zameni redosled zadate instrukcije i zadatog NOP u istom segmentu, a da ne promeni značenje programa (pri tom se konsultuje model programa u prostoru objekti-vreme).

CC0 = AC0 + AC3...NOP

NOP...CC0 = AC0 + AC3

Page 32: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

32

IZBACI zadati NOP

Ona pokušava da IZBACI zadati NOP iz programa, a da ne promeni značenje prorama. Uklanjanje NOP instrukcije iz niza instrukcija, dovodi do približavanja instrukcija koje slede NOP, instrukcijama koje ga prethode.

CC0 = AC0 + AC3...NOPCC1 = AC0 – AC2...

Page 33: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

33

TRAŽI-UNAPRED

Ova tehnika višeg nivoa koristi primitive ZAMENI i IZBACI. Polazi od početka programskog segmenta i u smeru njegovog izvršenja (unapred) traži NOP instrukciju.

CC0 = AC0 + AC3...NOP

NOP...CC0 = AC0 + AC3

ZAMENI IZBACI

Page 34: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

34

TRAŽI-UNAZAD

Polazi od kraja programskog segmenta i u smeru prema početku (unazad) traži NOP instrukciju.

NOP...CC0 = AC0 + AC3

CC0 = AC0 + AC3...NOP

ZAMENI IZBACI

Page 35: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

35

ZAMENI-PREDHODNI

Slična tehnici ZAMENI, uz dve bitne razlike: (a) kontekst je: segment-pretci i (b) u svakom pretku se zamenjuje po jedan NOP.

1 2

3

NOP instrukcija

korisna instrukcija

Page 36: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

36

Pažnja: bez promene semantike!

Ilustracija uticaja korisne instrukcije na segment koji je alternativan segmentu predak.

2

1

3

Page 37: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

37

ZAMENI-NAREDNI

Ilustracija operacije ZAMENI-NAREDNI: korisna instrukcija iz segmenta 1 zamenjuje NOP instrukcije iz segmenata 2 i 3.

2 3

1

Page 38: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

38

KOMPAKTUJ-SA-PREDHODNIM

Ova tehnika višeg nivoa koristi primitive ZAMENI-PREDHODNI i IZBACI.

1 2

3

NOP instrukcija

korisna instrukcija

PROBAJ DA IZBACIŠ NOP!

Page 39: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

39

KOMPAKTUJ-SA-NAREDNIM

Ova tehnika višeg nivoa koristi primitive ZAMENI-NAREDNI i IZBACI.

2 3

1PROBAJ DA IZBACIŠ NOP!

Page 40: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

40

PREIMENUJ resurs (renaming)Zameni resurs u instrukciji slobodnim resursom istog tipa.Pokazuje se da ova tehnika, kad se kombinuje sa ZAMENI i IZBACI, stvara prilike za dodatno kompaktovanje koda.

Page 41: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

41

Blok instrukcija u komse koristi isti resurs

Započinje instrukcijom punjenja akumulatora A1, a završava se instrukcijom koja predhodi narednoj instrukciji punjenja akumulatora A1

A1 X

X1 A1

Xn A1

. . .

. . .

A1 y

i

A1

Page 42: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

42

Kompaktovanjeili Tetris?

A 1

6

5

4

3

2

1

6

1

4 2

3

5

A 2 A 3

BLOKOVI KODA SE RASPOREĐUJU NA PRVI SLOBODAN RESURS!

KORISTI SE “POHLEPAN” (GREEDY) ALGORITAM.

Page 43: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

43

Šta ako se naprimer već koriste A1 i A3?

1

A1

6

9

3

6

6

3 42

8

A2 A3

9

5

7

7

8

1

42

5

7

3

or

2

1

4

5

8

9

Page 44: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

44

U praksi jedna instrukcija koristi više resursa, naprimer A1 i A3.(Interesantna varijacija Tetrisa.)

A 1

6

3 '

2 '

3 '

1

4

2 '

6

3 ' '

A 2 A 3

2 ' '

5

5

4

3 ' '

2 ' '

1

Page 45: INTEGRISANO RAZVOJNO OKRUŽENJE – V DEO Poglavlje 5 - V deo... · OKRUŽENJE – V DEO Kompaktor. 2 Definicija, ulaz i izlaz Kompaktora Def.: Kompaktor je uslužni program za

45

Simulator i DibagerVideti u knjizi.