Miért van szükség fordítóprogramokra? Fordítóprogramok célja és szerkezete. Miért van szükség fordítóprogramokra?



Hasonló dokumentumok
15. Programok fordítása és végrehajtása

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...

Introduction to 8086 Assembly

Mi az assembly? Gyakorlatias assembly bevezető. Sokféle assembly van... Mit fogunk mi használni? A NASM fordítóprogramja. Assembly programok fordítá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

Számítógépes alapismeretek

4. Programozási nyelvek osztályozása. Amatőr és professzionális

Számítógép Architektúrák

Történeti áttekintés

Stack Vezérlés szerkezet Adat 2.

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

1. ábra: Perifériára való írás idődiagramja

Újrakonfigurálható technológiák nagy teljesítményű alkalmazásai

A menetciklus a motor (hideg vagy meleg) beindításával kezdődik és a motor kikapcsolásával végződik.

1 Rendszer alapok. 1.1 Alapfogalmak

[cimke:] [feltétel] utasítás paraméterek [; megjegyzés]

Karunkról Kari digitális könyvtár

Egyszerű RISC CPU tervezése

Assembly Rekurzív függvények, EXE, C programok. Iványi Péter

Fordítóprogramok szerkezete avagy Mi történik Pascalban mikor F9-et nyomunk?

Miről mire fordít a fordítóprogram? Miről mire fordít az assembler? Mi a különbség a fordítóprogram és az interpreter között? Mi a virtuális gép?

Széchenyi István Szakképző Iskola

HARDVERKÖZELI PROGRAMOZÁS1

Fordítóprogramok. Aszalós László szeptember 7.

\ _/ / / _ \ ' / _` / ' / _ \ / _` (_) (_ (_) (_ \_ \ / _ \,_\ \ / \, / / 2.1. Alapfogalmak. 1. Mirol mire fordít a fordítóprogram?

Emlékeztető: a fordítás lépései. Szimbólumtábla-kezelés. Információáramlás. Információáramlás. Információáramlás.

Assembly. Iványi Péter

Bevezetés Alapfogalmak Jog

Mérési útmutató. A/D konverteres mérés. // Első lépésként tanulmányozzuk a digitális jelfeldolgozás előnyeit és határait.


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

Számítógép architektúrák I. Várady Géza

A MiniRISC processzor

Automatikus energiatakarékos kapcsoló Emberi mozgást érzékelő rendszerrel

Digitális technika II. (vimia111) 5. gyakorlat: Mikroprocesszoros tervezés, egyszerű feladatok HW és SW megvalósítása gépi szintű programozással

Digitális rendszerek. Utasításarchitektúra szintje

2 - ELEKTROMOS BEKÖTÉSEK

Kitlei Róbert kitlei.web.elte.hu. Karunkról Kari digitális könyvtár

Adatstruktúrák Algoritmusok Objektumok

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

Az informatika fejlõdéstörténete

EGÉSZSÉGRE GYAKOROLT HATÁSOK

Hardware minőségellenőrzése az elektronikai gyártási folyamat során Ondrésik Tamás, O0QUL3

GLR-8 C Hidroglóbusz vezérlő berendezés

A k k u m u l á t o r o s k ü l t é r i h a n g - é s f é n y j e l z ő. Telepítői és programozási útmutató

Joint Test Action Group (JTAG)

K7205 SORKIMENİ TESZTER ( LOPT/FBT )

Elıírt lépésszámú ciklusok

Programozási nyelvek (ADA)

Mennyire nyitott az emberi agy?

A mikroszámítógép felépítése.

HASZNÁLATI ÚTMUTATÓ SZÁRÍTÓGÉP

Virtualizációs Technológiák Bevezetés Kovács Ákos Forrás, BME-VIK Virtualizációs technológiák

CTR 31 VEZÉRLÉS. Elektronikus vezérlés egy motorra, 230 V, AC; egy fázisú, tolókapu és garázskapu mozgatására, végálláskapcsolók nélkül.

Fordítóprogramok beugrókérdések

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

Digitális technika II., 2009/2010 tavasz 1. vizsga A csoport

B-TEL99 Kétcsatornás telefonhívó

3 Hogyan határozzuk meg az innováció szükségszerűségét egy üzleti probléma esetén

Bánsághi Anna Bánsághi Anna 1 of 54

ME Szoftverfejlesztés

Fordítóprogramok szerkesztése Flex és Bison segítségével

Programozói Kézikönyv

Az assembly nyelv sor-orientált nyelv, tehát minden sorba pontosan egy utasítás kerül. Egy sor mezőkből áll a következőképpen:

1. BEVEZETÉS. - a műtrágyák jellemzői - a gép konstrukciója; - a gép szakszerű beállítása és üzemeltetése.

A típusszámok felépítése

Az Ön kézikönyve OMRON S8TS

Vezeték hossza (m)

Gitárerősítő. Használati utasítás

M210E M220E M221E M201E

Országzászlók (2015. május 27., Sz14)

AVR assembly és AVR C modulok együttes használata AVR C projektben. Összeállította: Sándor Tamás

Új termékkel bővült a Turbo-Tec kínálata

Jelalakvizsgálat oszcilloszkóppal

Szakmai program 2015

Assembly Utasítások, programok. Iványi Péter

Elektromágneses szivattyú PMA -1

VÁLLALAT- GAZDASÁGTAN. A vállalat

Máté: Számítógép architektúrák

A SZOLGÁLTATÓ KÖZIGAZGATÁS AKTUÁLIS KÉRDÉSEI

a textil-szövet hosszirányú szálainak és a teljes szálmennyiségnek a térfogati aránya,

A 32 bites x86-os architektúra regiszterei

FEM 2.5-D EGY GEOFIZIKAI RENDSZER MEGVALÓSÍTÁSA A GRID-

Javaslat AZ EURÓPAI PARLAMENT ÉS A TANÁCS RENDELETE

PROGRAMOZHATÓ LOGIKAI VEZÉRLİK

Szerelési, üzemeltetési útmutató

5 Egyéb alkalmazások. 5.1 Akkumulátorok töltése és kivizsgálása Akkumulátor típusok

A készletezés Készlet: készletezés Indok Készlettípusok az igény teljesítés viszony szerint

Objektum Orientált Szoftverfejlesztés (jegyzet)

Programzás I gyakorlat

BGSM-A v ábra. DSC Hungária 1

FOLYAMATLÉPÉSEK CITROEN SAXO

Használati utasítás DENVER CAP CSATORNÁS NAGYTEJESÍTMÉNYŰ ERŐSÍTŐ BERENDEZÉS

Intel x86 utasításkészlet + disassembler működése

SZŰRŐBERENDEZÉSEK ECOFIL

Kockázatkezelési elvek, módszerek

Assembly Címzési módok. Iványi Péter

TANÁRI MESTERKÉPZÉSI SZAK LEVELEZŐ TAGOZAT. mesterképzés (MA, MSc) levelező. Bölcsészettudományi Kar

Szuperszámítógépes teljesítmény szuperszámítógép nélkül A BinSYS Projekt

B-TEL99 KÉTBEMENETŰ, AUTOMATA TELEFONHÍVÓ. Felszerelési és Felhasználási útmutató

Átírás:

és szerkezete Így kényelmes programozni int sum = 0; for( int i=0; i<len; ++i ) sum += t[i]; Fordítóprogramok előadás (A,C,T szakirány) 1 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete 2 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete Így kényelmes programozni int sum = 0; for( int i=0; i<len; ++i ) sum += t[i]; Ezt tudja végrehajtani a számítógép B9 00 00 00 00 B8 00 00 00 00 81 F9 0A 00 00 00 7D 06 03 04 8B 41 EB F2 magasszintű programozási nyelvek könnyebb programozni közelebb a megoldandó problémához platform-függetlenség gépi kód gépközeli (numerikus utasításkódok, regiszterek, memóriahivatkozások...) erősen platform-függő optimalizált Fordítóprogramokat általában a kettő közötti átalakításra használunk. 2 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete 3 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete Assembly és assembler Assembly, gépi kód Assembly és assembler Assembly, gépi kód az assembly nyelvekben a gépi kód utasításaihoz neveket (mnemonikokat) rendelünk a regiszterekre névvel hivatkozunk az egyes memóriacímeket címkékkel azonosítjuk gyakran közbülső állomás a magasszintű nyelvről gépi kódra történő fordítás során assembler: assembly nyelvről gépi kódra fordít Gépi kód B9 00 00 00 00 B8 00 00 00 00 81 F9 0A 00 00 00 7D 06 03 04 8B 41 EB F2 Assembly mov ecx,0 mov eax,0 eleje: cmp ecx,10 jge vege add eax,[ebx+4*ecx] inc ecx jmp eleje vege: 4 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete 5 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete

Példák Példák magasszintű nyelvek fordítóprogramjai (compiler) gcc, javac, ghc... assembly nyelvek fordítóprogramjai (assembler) nasm, masm, gas... nyelvek közötti fordítás (translator) Fortran = C, latex2html, dvips... egyéb fordítóprogramok latex hardware leíró nyelvből áramkörök tervei Fordítás: A forráskódot a fordítóprogram tárgyprogrammá alakítja. A tárgyprogramokból a szerkesztés során futtatható állomány jön létre. Fordítási idő: amikor a fordító dolgozik Futási idő: amikor a program fut Interpretálás: A forráskódot az interpreter értelmezi és azonnal végrehajtja. a fordítási és futási idő nem különül el 6 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete 7 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete Fordítás Interpretálás (input) (input) (source) Fordítóprogram (compiler) (object) (source) Értelmező (interpreter) (output) (output) 8 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete 9 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete Fordítás vs. interpretálás Fordítás + interpretálás Fordítás gyorsabb végrehajtás a forrás alaposabb ellenőrzése minden platformra külön-külön le kell fordítani C++, Ada, Haskell... Interpretálás rugalmasabb (pl. utasítások fordítási időben történő összeállítása) minden platformon azonnal futtatható, ahol az interpreter rendelkezésre áll Perl, Php, Javascript... egymásra építve (pl. Java): 1 A forráskód fordítása bájtkódra. 2 A bájtkód interpretálása virtuális géppel. Fordítóprogram Bájtkód Virtuális gép Virtuális gép: olyan gép szoftveres megvalósítása, amelynek a bájtkód a gépi kódja. 10 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete 11 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete

Fejlődés Történet 1957, az első Fortran compiler: 18 emberévnyi munka azóta fejlődött a formális nyelvek és automaták elmélete ma: a fordítóprogramok létrehozásának egy része automatizálható a programszöveget (szintaktikusan) elemző program: automatikusan generálható a szemantikus ellenőrzést (pl. típusok) és kódgenerálást végző program: nem generálható automatikusan, de nem túl bonyolult kódoptimalizálás: nehéz feladat Példa: elemzőgenerátorok 12 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete 13 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete 14 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete 15 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete 16 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete 17 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete

18 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete 19 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete Lexikális hibák Szintaktikus hibák Szemantikus hibák Kód-kezelő (code handler) Kód-kezelő (code handler) 20 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete 21 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete Forrás kezelő Lexikális elemző bemenet: fájl(ok) kimenet: karaktersorozat fájlok megnyitása olvasás pufferelés az operációsrendszer-specifikus feladatok elvégzése ha a fordítóprogram készít listafájlt, akkor ezt is kezeli Példa input.cpp = x = x + 1; bement: karaktersorozat kimenet: szimbólumsorozat, lexikális hibák lexikális egységek (szimbólumok) felismerése: azonosító, konstans, kulcsszó... Példa x = x + 1; = változó[x] operátor[=] változó[x] operátor[+] konstans[1] utasításvég 22 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete 23 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete

Szintaktikus elemző Szemantikus elemző bemenet: szimbólumsorozat kimenet: szintaxisfa, szintaktikus hibák a program szerkezetének felismerése a szerkezet ellenőrzése: megfelel-e a nyelv definíciójának? Az x = x + 1; utasítás szintaxisfája utasítás kifejezés utasításvég kifejezés operátor kifejezés változó változó operátor konstans bemenet: szintaktikusan elemzett program (szintaxisfa, szimbólumtábla,...) kimenet: szemantikusan elemzett program, szemantikus hibák Szintaktikus hibák x = x 1; x = x + ; if x==0) {} típusellenőrzés változók láthatóságának ellenőrzése eljárások hívása megfelel-e a szignatúrának? stb. Szemantikus hibák if( alma == 3.14 ) {} void f(int x) {} f(3,4); { int y; } y++; 24 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete 25 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete Kódgenerátor Kódpotimalizáló bemenet: szemantikusan elemzett program kimenet: tárgykód utasításai (pl. assembly, gépi kód) a forrásprogrammal ekvivalens tárgyprogram készítése Az x = x + 1; utasítás egy lehetséges megvalósítása mov eax,1 push eax mov eax,[x] pop ebx add eax,ebx mov [x],eax 26 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete bemenet: tárgykód kimenet: optimalizált tárgykód valamilyen szempontok szerint jobb kód készítése pl. futási sebesség növelése, méret csökkentése pl. felesleges utasítások megszüntetése, ciklusok kifejtése... optimalizáció végezhető az eredeti programon (szemantikus elemzés után) a tárgykódon (a kódgenerálás után) Az x = x + 1; utasítás kódjának optimalizálása mov eax,1 push eax mov eax,[x] pop ebx = inc dword [X] add eax,ebx mov [X],eax 27 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete Emlékeztető: a fordítás komponensei A fordítás menetei Kód-kezelő (code handler) 28 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete az egyes komponensek egymást követik az egyik kimenete a másik bemenete ez nem jelenti azt, hogy pl. a lexikális elemzőnek be kell fejeződnie a szintaktikus elemzés előtt a szintaktikus elemző meghívhatja a lexikálisat, amikor egy újabb szimbólumra van szüksége eredmény: egy utasításnak akár a tárgykódja is elkészülhet, amikor a következő utasítás még be sincs olvasva a kódoptimalizálásnál viszont jellemzően újra át kell olvasni az egész tárgykódot (akár többször is) A fordítás annyi menetes, ahányszor a programszöveget (vagy annak belső reprezentációit) végigolvassa a fordító a teljes fordítási folyamat során. 29 Fordítóprogramok előadás (A,C,T szakirány) és szerkezete