Käännös, linkitys ja lataus

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

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

Jakso 10 Ohjelman suoritus järjestelmässä

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)

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

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

Jakso 10 Ohjelman suoritus järjestelmässä

Muistihierarkia. Virtuaalimuisti. Tiedostojärjestelmä. Levymuistin saantiaika. Tietokoneen toiminta Luento 9, Ulkoinen muisti ja I/O 1

Tietokoneen toiminta Teemu Kerola, Copyright Muistihierarkia

Muistihierarkia Kiintolevyt I/O:n toteutus. Käännös, Linkitys Lataus

Tietokoneen toiminta, K Tavoitteet (4)

Jakso 12 Yhteenveto. Keskeiset asiat Teemu Kerola, K2000

Luento 12 Yhteenveto

Tietokoneen toiminta, K Tavoitteet (4)

Luento 12 Yhteenveto. Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat? Teemu Kerola, K2000

Luento 12 Yhteenveto

Luento 12 Yhteenveto

Käännös Linkitys Dynaaminen linkitys Lataus

Tavoitteet (4) Luento 12 Yhteenveto. Keskeisiä asioita. Mitä hyötyä tästä on? (2) Esimerkkikone: TTK-91 laitteisto suoritin - CPU

Luento 12 Yhteenveto. Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat?

Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat? Teemu Kerola, Copyright Tavoitteet (4)

Luento 12 Yhteenveto. Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat? 29/01/2001 Teemu Kerola, Copyright 2001

Tietokoneen toiminta Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat? Teemu Kerola, Copyright 2010

Luento 12 Yhteenveto. Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat? Teemu Kerola, Copyright 2010

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

Jakso 4 Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus

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

Luento 4 Aliohjelmien toteutus

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

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

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Tietokoneen toiminta Keskeiset asiat Mitä hyötyä tästä on? Mitä seuraavaksi? Kurssit? Asiat? Teemu Kerola, Copyright 2003

Jakso 4 Aliohjelmien toteutus

Luento 12 Yhteenveto. Tavoitteet. Keskeisiä asioita. Mitä hyötyä tästä on? Esimerkkikone: TTK-91 laitteisto. Tietokoneen toiminta 27.4.

Luento 4 Aliohjelmien toteutus

Kertausluento luennoista 1-3 1

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

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

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

Luento 4 Aliohjelmien toteutus

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

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

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

4. Lausekielinen ohjelmointi 4.1

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

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

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 27. lokakuuta 2009

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

11/20: Konepelti auki

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

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

4. Lausekielinen ohjelmointi 4.1

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

Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

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

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset

Tiedon sijainti suoritusaikana (3) Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Miten tietoon viitataan? (4)

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

Tietokoneen toiminta (Computer Organization I)

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

Tiedon sijainti suoritusaikana. Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Muistihierarkia Kiintolevyt I/O:n toteutus

Makrojen mystinen maailma lyhyt oppimäärä

Ohjelmointi 1 / syksy /20: IDE

5. HelloWorld-ohjelma 5.1

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Tietokoneen toiminta (Computer Organization I)

samalla seuraavaan puoliavaruuteen (sukupolveen), jota siivotaan harvemmin.

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

Lyhyt kertaus osoittimista

Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

Oppimistavoitteet kurssilla Tietokoneen toiminta

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset

Virtuaalikoneiden generointi Vmgen-kääntäjällä

Ohjelmoinnin peruskurssien laaja oppimäärä

4. Luokan testaus ja käyttö olion kautta 4.1

5. HelloWorld-ohjelma 5.1

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

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Aihepiiri Tietokoneen toiminta (Computer Organization I)

Tietokoneen toiminta (Computer Organization I)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset

Aihepiiri Tietokoneen toiminta (Computer Organization I)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset

Transkriptio:

Luento 10 (verkkoluento 10) Käännös, linkitys ja lataus Ohjelmasta prosessiin Käännösyksikkö Kääntämisen vaiheet Makrot, literaalit Staattinen ja dynaaminen linkitys Nimien sidonta

Lausekielestä suoritukseen Käännös lausekielestä Linkitys muiden ja kirjastomoduulien kanssa Lataus muistiin prosessia varten Käännösyksikkö myprog.c Lausekielinen ohjelma tai moduuli osoitteet: symbolit Objektimoduuli myprog.obj Käännetty ohjelma (konekielellä) osoitteet: lineaariset (per moduuli) Ajomoduuli myprog.exe osoitteet: lineaariset, osa puutteellisia (?) Prosessi Suorituskelpoinen ohjelma osoitteet: lineaariset (virt. avar.?) Keskustele 2 prog.c prog.o math.l prog

Konekielinen koodi Objektimoduuli moduulin sisäiset viitteet paikallaan (lineaarisessa muistiavaruudessa) moduulin ulkopuoliset viitteet merkitty Linkitystä varten: Uudelleensijoitustaulu. Tiedot niiden osoitteiden sijainneista, jotka täytyy päivittää, kun moduulin osoiteavaruus yhdistetään jonkin toisen moduulin osoiteavaruuden kanssa linkityksessä Tiedot viittauksista moduulin ulkopuolelle Tiedot moduulin kohdista, joihin saa viitata ulkopuolelta Symbolitaulu SYMBOL TABLE RELOCATION TABLE IMPORT EXPORT 3

Symbolitaulu Mikä arvo kullakin symbolilla on? Staattinen arvo voi olla (myös) muistiosoite Kääntäjä generoi Ylläpidetään linkityksen aikana Joskus ylläpidetään myös latauksen jälkeen virheilmoitusten tekemistä varten ohjelmien kehitysympäristöt ylläpitävät symbolitaulua koko ajan Jätetään pois valmiista ohjelmasta vie turhaa tilaa, ei tarvita normaalisuorituksessa 4

Makro Usein toistuva koodisarja, helpottaa ohjelmointia Voi sisältää parametreja nimiparametreja (call-by-name) Käsitellään ennen kääntämistä eivät kuulu konekieleen makron kutsu (käyttö) korvataan makron rungolla Esimerkkejä swap aliohjelmien prologi ja epilogi itse tehdyt, kääntäjän käyttämät Erot aliohjelmiin Kutsu ajankohta, call/return, koodien lukumäärä Keskustele 5

Literaalit Korkean tason kielissä kaikki isot vakiot ovat literaaleja N := 35000; kääntäjän pitäisi estää literaalien muuttaminen FortranX: 5 = 6; literaalia ei saisi välittää viiteparametrina aliohjelma voisi muuttaa sen arvoa? Joissakin symbolisissa konekielissä literaalien implisiittinen (automaattinen) määrittely helpommin kirjoitettavaa/luettavaa koodia literaalin 234567 tilanvaraus automaattisesti Load R14, =F 234567 LOAD R1, six STORE R1, five var mystr = literal"??? Java string? Symbolin F 234567 määrittely: F 234567 sen muistipaikan osoite, jonka arvo on 234567 6

Assembler käännös 1. vaihe (koodin läpikäynti) laske käskyjen tilanvaraukset generoi symbolitaulu, muut taulut 2. vaihe (koodin läpikäynti) generoi lopullinen objektimoduuli tulosta symbolinen konekielinen listaus generoi taulut linkitystä varten anna virheilmoitukset 3. vaihe koodin generointi ja optimointi voi olla oikeasti ennen 2. vaihetta tai sen yhteydessä Keskustele 7

Korkean tason kielen käännös Enemmän vaiheita P-code, bytecode, Syntaktisten alkioiden etsintä Syntaksipuun generointi ja jäsennys Lauseiden tunnistaminen syntaksipuun avulla Välikielen (välikoodin) generointi (ei aina) Koodin optimointi Koodin generointi ei (yleensä) Java-ohjelmille Lisää tietoa? Kääntäjien ja ohj. kielten kurssit BEGIN 123.45 IF ( (front end) Välikieliesitys ja symbolitaulut (back end) Keskustele 8

Linkitys 0 Uudelleensijoitusvakio A: 0, B: L, C: L+M Lisää vakio kunkin moduulin sisäisiin viitteisiin Moduulien väliset viitteet oikein huomioi viitteessä viitatun moduulin vakio L 0 M 0 N Fig. B.12 [Stal13] 9

Staattinen ja dynaaminen linkitys Staattinen linkitys Kaikki ohjelmakoodissa viitatut moduulit ja kirjastorutiinit on linkitetty ennen suoritusta Iso ajomoduuli mukana moduuleja, joihin ei yhdellä suorituskerralla tule lainkaan viittauksia Dynaaminen linkitys Kutsukohdat muihin moduuleihin jätetään auki Pienempi ajomoduuli, mutta hitaampi suorittaa Viittaus ratkaisemattomaan (eli ei-linkitettyyn) moduuliin ratkotaan suoritusaikana suoritus keskeytyy ja puuttuva moduuli linkitetään paikalleen (kaikki viittaukset siihen korjataan kuntoon) Keskustele 10

Lataus Ajomoduulista luodaan suorituskelpoinen prosessi (rakennetaan PCB ja sen viitteet kuntoon) Prosessin koodi- ja data-alueet ladataan muistiin, prosessi siirretään jonoon Valmis suoritukseen (Ready, Ready-to-Run) Eri tyyppejä Absoluuttinen aina samaan paikkaan muistia Uudelleensijoitettava joustava sijainnin valinta muistissa Milloin ja miten osoitteet muutetaan? Dynaaminen ajoaikainen muistisijainti vaihtelee ajoaikana Milloin ja miten osoitteet muutetaan? 11

Nobel 1956 Nobel 2000 -- Loppu -- Transistori J. Bardeen, W.B. Shockley ja W. Brattain, Bell Labs, 1948 TX-0, MIT, 1956 1900-luvun tärkeimpiä keksintöjä maailmassa Integroitu piiri (ei enää johtoja) Jack Kilby, Texas Instruments, 1958 Robert Noyce, Fairchild Semiconductor, 1959 IBM S/360, 1964 1 st IC (Kilby) 12