käännösprosessi Kääntäjä Konekielikääntäjä (Assembler) Yhdistelijä (linker) Lataaja (loader)

Samankaltaiset tiedostot
Käännös, linkitys ja lataus

Jakso 10 Ohjelman suoritus järjestelmässä. Käännös Linkitys Dynaaminen linkitys Lataus

Jakso 10 Ohjelman suoritus järjestelmässä

Jakso 10 Ohjelman suoritus järjestelmässä

Luento 10 Käännös, linkitys ja lataus. Käännös Linkitys Dynaaminen linkitys Lataus

Luento 10 Käännös, linkitys ja lataus

Lausekielestä suoritukseen (3) Luento 10 Käännös, linkitys ja lataus. Assembler-kielinen käännösyksikkö (2) Käännösyksikkö (4) Objektimoduuli (8)

Luento 10 Käännös, linkitys ja lataus

Lausekielestä suoritukseen (3) Luento 10 Käännös, linkitys ja lataus. Assembler-kielinen käännösyksikkö (2) Objektimoduuli (2) Symbolitaulu

Käyttöjärjestelmät: Virtuaalimuisti

TIE Ohjelmistojen suunnittelu

ltöä (Luennot 5&6) Luento 5: YKSINKERTAINEN SEGMENTOINTI JA SIVUTUS Pikakertaus: : a) b) c) Dyn.. part.: sijoitus Kuva Buddy System: esimerkki

Osio 2: Luennot 4-7 Muistinhallinta

Luento 5: YKSINKERTAINEN SEGMENTOINTI JA SIVUTUS

Osio 2: Luennot 4-7 Muistinhallinta YKSINKERTAINEN MUISTINHALLINTA. ltöä YLEISTÄ MUISTINHALLINNASTA. Looginen muisti.

CUDA. Moniydinohjelmointi Mikko Honkonen

Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä

Kertausluento luennoista 1-3 1

Finnfoam tuotekirjaston asennusohje. Asennus ja rekisteröintiohje

Luento 1 (verkkoluento 1) Tietokonejärjestelmä

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

MUISTINHALLINTA. Stallings, Luku 7

Johdatus ohjelmointiin

4. Lausekielinen ohjelmointi 4.1

Luento 7: VIRTUAALIMUISTIN SIVUTUS JA SEGMENTOINTI

Kuva 8.7. u Muunnos prosessin sivunumerosta sivutilanumeroksi u Kussakin alkiossa: u Katenoimalla. u MMU:ssa; juuri äsken käytettyjä muunnoksia

Dynaaminen muisti. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät 2017.

Stallings, Luku 8.1. KJ-I I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 8-1

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Teemun juustokakku Rekisterien, välimuistin, muistin, levymuistin ja magneettinauhan nopeudet suhteutettuna juuston hakuaikaan juustokakkua tehdessä?

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Luento 3 (verkkoluento 3) Ttk-91 konekielinen ohjelmointi. Ohjelman esitysmuoto Konekielinen ohjelmointi ttk-91:llä (Titokone, TitoTrainer)

Jakso 4 Aliohjelmien toteutus

P e d a c o d e ohjelmointikoulutus verkossa

Osio 2: Luennot 5-8 Muistinhallinta

DXL Library ja DXL-kielen olemus. Pekka Mäkinen SoftQA Oy http/

Arduino ohjelmistokehitys

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Jakso 4 Aliohjelmien toteutus

Luento 4 Aliohjelmien toteutus

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Scheme-kesäkurssi luento 5

ltö Luento 6: VIRTUAALIMUISTI Luento 7: Segmentointi Segmentointi ja sivutus yhdistettynä Yhteiskäytöstä Suoritus virtuaalimuistissa

Kertausluento 1 (lu01, lu02, lu03) Tietokonejärjestelmän rakenne ttk-91 ja sillä ohjelmointi

Tiedostonhallinta. Yleistä

Tietokoneen toiminta, Kevät Copyright Teemu Kerola Järjestelmän eri tasot Laitteiston nopeus

Luento 6: VIRTUAALIMUISTI

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Lumon tuotekirjaston asennusohje. Asennus- ja rekisteröintiohje

.NET ajoympäristö. Juha Järvensivu 2007

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

Ongelma(t): Jotta tietokone olisi mahdollisimman yleiskäyttöinen ja suorituskykyinen, niin miten tietokoneen resurssit tulisi tarjota ohjelmoijalle,

Tekstinkäsittelystä. H4: Tekstinkäsittelyn perusharjoitus. Toimisto ohjelmista

Optimointi. Etsitään parasta mahdollista ratkaisua annetuissa olosuhteissa. Ongelman mallintaminen. Mallin ratkaiseminen. Ratkaisun analysointi

Laiteläheinen C-kieli, mitä C-käännösprosessissa tapahtuu

Dynaaminen muisti Rakenteiset tietotyypit

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Tietokoneen toiminta, K Tavoitteet (4)

Käyttöjärjestelmän rakenne

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?

Harjoitus 1 -- Ratkaisut

SataSali Yrityksen konesali

OHJ Laitteistonläheinen ohjelmointi

Student Engeering & Design Community

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Stallings, Luku 7. KJ-I I S2004 / Tiina Niklander; kalvot Auvo Häkkinen 6-1

Linux rakenne. Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

4.2. ALIOHJELMAT 71. Tulosvälitteisyys (call by result) Tulosvälitteinen parametri kopioidaan lopuksi

2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma muuttaa parametrejaan tai globaaleja muuttujia, tulostaa jotakin jne.

Dynaaminen optimointi

Luento 1 (verkkoluento 1) Ohjelman sijainti Ohjelman esitysmuoto Laitteiston nopeus

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä

1 Visma L7 päivitysaineiston nouto

Harjoitustyö: virtuaalikone

Ohjelmiston toteutussuunnitelma

Luento 2 (verkkoluento 2) Ttk-91 järjestelmä

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5)

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

Sisältöä MUISTINHALLINTA. Stallings, Luku 7. Fyysinen muisti YLEISTÄ MUISTINHALLINNASTA. Looginen muisti. Prosessin rakenne

Työkalujen yleinen arkkitehtuuri. Ylläpitoon liittyvät työkalut. Ylläpitotehtävien mukaiset työkalut. Työkalujen jaotteluperusteita

Jakso 4 Aliohjelmien toteutus

Valitse ruudun yläosassa oleva painike Download Scilab.

Tietorakenteet ja algoritmit

Luento 4 Aliohjelmien toteutus

Luento 7 Taulukkolaskennan edistyneempiä piirteitä Aulikki Hyrskykari

Käyttöjärjestelmät: prosessit

TAITAJA 2007 ELEKTRONIIKKAFINAALI KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro:

Ohjelmoinnin perusteet Y Python

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 7. joulukuuta 2009

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 4 Aliohjelmien toteutus. Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio

LUENTO 7 TAULUKKOLASKENTA I

Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä

DOORSin Spreadsheet export/import

Transkriptio:

käännösprosessi Kääntäjä Konekielikääntäjä (Assembler) Yhdistelijä (linker) Lataaja (loader)

Kääntäjä Kääntäjän rakenne Perinteinen yksivaiheinen Kääntää suoraan konekoodiksi Käännöksen jälkeen peephole-optimointi Moderni monivaiheinen Front end kääntää lähdekoodin jäsennyspuuksi Jäsennyspuu optimoidaan Back end- kääntää jäsennyspuun konekoodiksi

Yksivaiheinen kääntäjä Ei omaa kokonaisnäkemystä koodista Optimointi paikallista Peephole-optimointi Etsitään muutaman käskyn sekvenssejä, jotka voidaan korvata tehokkaammalla sekvenssillä Koska yksivaiheisella kääntäjällä hyvin paikallinen näkemys lähdekoodista, sopivia sekvenssejä syntyy helposti

Monivaiheinen kääntäjä Front-end tuottaa jäsennyspuun Tätä voidaan optimoida Lausekkeiden laskentajärjestyksen optimointi Vakiolausekkeiden evaluointi Silmukoiden optimointi Toistuvan laskennan siirto Yhteisten alilausekkeiden tunnistus (common subexpression elimination) Vakioiden siirto (constant propagation)

Jäsennyspuun purkaminen Jäsennyspuu puretaan virtuaalikonekieleksi Muuttujien elinaika-analyysi Silmukoiden purku (loop unrolling)

Back-end Rinnakkaistaminen Käskyjen skedulointi (viivästetyt käskyt) Lomituksen valinta (rinnakkaiset suoritusyksiköt) Rekisterien varaus Muuttaa virtuaalikonekielen todelliseksi konekieleksi (symboliseksi) Arkkitehtuuri kohtainen

assembler Mitä assembler tekee Muuttaa symboliset käskyt bittiyhdistelmiksi Yleensä yksi yhteen relaatio Joskus suorittaa yksinkertaisia optimointeja käskyn valinnassa Toteuttaa synteettiset käskyt Toteuttaa pseudokäskyt Sektiojako Tilavaraukset Alignointi Tuloksena objektitiedosto

Objektitiedosto Yksinkertaisimmillaan muistikuva (absolute image) Yleensä ns. Uudelleen sijoitettava objekti Relocatable object file Nykyään käytössä COFF (common object file format) ELF (executable and Linking Format) PE (portable executable) (windows) OMF (Objevct Module Format) (intel)

objektitiedosto Sisältää Koodin Alustetun datan Tiedot muun datan määrästä Symbolitaulun Uudelleensijoitus tiedot

symbolitaulu Sisältää tiedot Julkisista määritellyistä symboleista Funktion alkuosoite Globaalin muuttujan osoite Tuntemattomista symboleista Viittauskohdat ja nimi

Uudelleensijoitus tiedot Absoluuttisista viittauksista kirjataan Mihin kohdistuu, missä tehdään Viittaus ulkoiseen symboliin Viittaus omaan koodiin Viittaus omaan dataan

yhdistelijä Syötteenä objektitiedostoja, tuloksena objektitiedosto (joskus jopa suoritettavissa oleva) absoluuttinen image Uudelleensijoitettava image

yhdistely Poimi tekstisegmentit objekteista.text (runkokoodi),.init (globaalit rakentajat),.fini (globaalit tuhoajat) Yhdistä yhdeksi segmentiksi Uudelleen sijoitus (korjaa osoitteet) Symbolien ratkaisu (korjaa määrittelemättömät) Sama data segmenteille Alustetut ja alustamattomat

lataaja Lataa ohjelmakoodin suoritukseen Absoluuttinen Vain kopiointi muistiin Yhdistelevä (linking loader) Liittää ajoajan kirjastot Läsnäolevat kirjastot (resident libraries) Uudelleen sijoittava (relocating) Lyö lukkoon ohjelman sijainnin muistissa

tekniikoita Perustekniikat Aluksi kaikki koodi ladattiin sovelluksen mukana Hidasta, jos isoja muistiavaruuksia Miten nopeuttaa?

tekniikoita Läsnäolevat kirjastot Resident library vakiokoodi pidetään aina muistissa (kiinteä osoite) Jaettu koodi Samaa sovellusta suoritetaan yhteisestä koodialueesta Kirjoitus suojattu koodi Koodi ja data-alueet erotellaan

tekniikoita Entä jos ohjelma ei mahdu muistiavaruuteen Muistiin kerrostus (memory-resident overlay) Fyysistä muistia enemmän kuin muistiavaruutta Levylle kerrostus (disk-resident overlay) Jos muistiavaruus riittää, mutta fyysinen muisti loppuu --> virtuaalimuisti

lataaja Nykyaikaisissa järjestelmissä Suoritettava koodi kirjoitussuojattua Sivutettua (virtuaalimuisti) Dynaaminen lataus käytössä Shared objects (tai dll)

Sivutuksen vaikutus Koodi (ja data) varataan sivuittain (4 16 kb) Koodi sivutetaan suoritettavasta tiedostosta Data ladataan suoritettavasta tiedostosta, sivutetaan swap-tiedostoon

Dynaaminen lataus Miksi dynaaminen lataus Säästää muistia (levytilaa) Helpottaa ylläpitoa Mahdollistaa kolmannen osapuolen sovelluksissa

Dynaaminen lataus Viittaus tuntemattomaan symboliin ratkaistaan Yhdistelyssä (staattinen lataus) Ladattaessa Latauksen yhteydessä etsitään tarvittavat symbolit Kutsuttaessa (ensimmäisen) viittauksen yhteydessä etsitään tarvittavat symbolit

Dynaaminen lataus Ongelmat Ladattaessa, minne kirjastokoodi sijoitetaan? Koodi on jaettua, jaettu koodi on kirjoitussuojattua Yhdistely vaatii uudelleensijoittelua, joka vaatii viittausten korjailua Miten korjata kirjoitussuojattua koodia?

Dynaaminen lataus Kirjastot paikasta riippumatonta koodia Yhdistely linkkisegmentin kautta Linkkisegmentti sisältää tiedot viittauksista Kullekin koodisegmentille on oma linkkisegmentti