Překladače 9. Generování cílového kódu

Slides:



Advertisements
Podobné prezentace
Petr Krčmář Virtualizace (především linuxová) InstallFest 2011.
Advertisements

Počítačové sítě 8. Využití sítí © Milan Keršlágerhttp:// Obsah: ● sdílení v sítích.
Překladače 2. Vnitřní struktura překladače © Milan Keršlágerhttp:// Obsah: ● činnost.
POČÍTAČOVÉ VIRY A ANTIVIROVÉ PROGRAMY. Viry a antivirové programy VIR program, který se dokáže sám šířit bez vědomí uživatele. pro množení se vkládá do.
Číslo projektu: CZ.1.07/1.4.00/ Název DUM: Prostředí internetu Číslo DUM: III/2/VT/2/2/27 Vzdělávací předmět: Výpočetní technika Tematická oblast:
Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Josef Ledvoň. Dostupné z Metodického portálu ISSN: , financovaného.
Operační program Vzdělávání pro konkurenceschopnost Název projektu: Inovace magisterského studijního programu Fakulty ekonomiky a managementu Registrační.
Úvod do Delphi - 1.hodina OB21-OP-EL-KON-DOL-M-4-006A Orbis pictus 21. století.
Význam diferenciálních rovnic převzato od Doc. Rapanta.
Formáty souborů (neboli typ souboru) obvykle určuje význam dat v elektronickém souboru. Existuje množství různých formátů, přizpůsobených pro ukládání.
Technologie počítačů 4. Sběrnice © Milan Keršlágerhttp:// Obsah: ● ISA, EISA, VL-BUS,
Počitačová bezpečnost - je obor informatiky, který se zabývá zabezpečením informací v počítačích (odhalení a zmenšení rizik spojených s používáním počítače).
Univerzitní informační systém III., Lednice 2004 Vývoj a koncepce nového univerzitního webu Ondřej Kudlík
2. Ochrana statických dat ● Stupně ochrany dat ● Bezpečnostní logy ● Ochrana před fyzickým přístupem ● Ochrana před logickým přístupem ● Ochrana před zničením.
Software =je v informatice sada všech počítačových programů používaných v počítači, které provádějí nějakou činnost. - Software je protiklad k hardwaru,
Dopravní modely v SUMP Jitka Ondráčková
Databáze © Mgr. Petr Loskot
Architektura operačních systémů
Spuštění programu (10).
Počítačová bezpečnost Cvičení 2: Procesy a oprávnění
Výukový materiál zpracován v rámci projektu
Systémové databáze v SQL Serveru
Počítačové sítě 16. IPv6 Obsah: původ IPv6, IPv6 adresa a její zápis
Software počítače – opakování
Operační systémy Hardwarové prostředky využívané počítačem
COM – Práce s objektovým modelem jiné aplikace
Operační systémy Soubory a adresáře
Evaluace předmětů studenty (Anketky)
Batové dávky Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Vojtěch Mrózek. Dostupné z Metodického portálu ISSN: ,
OPERAČNÍ SYSTÉMY Část 1 – úloha OS Zpracovala: Mgr. Marcela Cvrkalová
Inf Operační systémy a jejich funkce
Správa paměti - úvod Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Financováno z ESF a státního rozpočtu ČR.
Architektura UIS Bc. Tomáš Procházka Sekce jádra systému Vývojový tým Univerzitního informačního systému Mendelova zemědělská a lesnická univerzita v.
Financováno z ESF a státního rozpočtu ČR.
Struktury.
Operační systémy 13. Knihovny, spustitelné soubory
Počítačová bezpečnost 2. Bezpečnost v OS
Inf Ovládání operačního systému
JEdit Open source programování – – Marek Bílý.
Databáze MS ACCESS 2010.
Výukový materiál zpracován v rámci projektu
Financováno z ESF a státního rozpočtu ČR.
SIMULAČNÍ MODELY.
Souběh Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Stránkování Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Překladače 6. Sémantická analýza
SÁRA ŠPAČKOVÁ MARKÉTA KOČÍBOVÁ MARCELA CHROMČÁKOVÁ LUKÁŠ BARTOŠ B3E1
1. ročník oboru Mechanik opravář motorových vozidel
Operační systémy 13. Knihovny, spustitelné soubory
Přídavná zařízení.
Číslicové měřící přístroje
VY_32_INOVACE_6_5_Operační systémy
Instalace OS Linux Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu ISSN: 
Microsoft Office Access
PHP - Personal Home Page
Programovatelné automaty (Programmable logic controllers – PLC)
Opakování učiva pro 9. ročník
Materiál byl vytvořen v rámci projektu
Operační systémy MS Windows Mgr. Petra Toboříková.
Digitální gramotnost Informatické myšlení
Remote login.
Název školy: Autor: Název: Číslo projektu: Název projektu:
Přednášky z Distribuovaných systémů
Nádherné prezentace navrhnete a předvedete snadno a s jistotou.
Analýza informačního systému
Diagnostika dítěte předškolního věku
Union neboli sjednocení Bitová pole
Digitální učební materiál
Opakování učiva pro 9. ročník
Transkript prezentace:

Překladače 9. Generování cílového kódu Obsah: object kód, linker, relokace dynamické knihovny, loader PIC, PIE, spustitelný soubor formáty souborů ELF, EXE, COM, DLL ladění, core-dump logování, trasování, profilování systémy na sledování chyb © Milan Keršláger http://www.pslib.cz/ke/slajdy 21.4.2011 http://creativecommons.org/licenses/by-nc-nd/3.0/

Generování cílového kódu poslední fáze překladu vstup: mezikód výstup: object kód dále zpracovává linker vstup: object kód výstup: knihovna, spustitelný soubor soubory obsahují metadata, strojové instrukce, data lze využít atributovou gramatiku

Object kód typicky uložen v souboru unixové systémy: *.o, *.so obsahuje strojový kód (někdy přímo spustitelný) často obsahuje doplňující metadata relokační tabulka interní a externí identifikátory funkcí a proměnných přesněji: definované, nedefinované a interní ladící informace různé formáty unixové systémy: a.out, ELF Windows: COM, EXE

Linker typicky není součástí překladače vstupem je object kód (typicky více, knihovny) výstupem je hotový spustitelný soubor (knihovna) řeší odkazy na symboly pomocí sloučení více modulů, knihoven někdy ne úplně: výjimkou jsou dynamické knihovny rozhoduje o umístění v paměti relokace na výsledné místo relokatibilita může být zachována (PIC)

Relokace přizpůsobení kódu konkrétnímu umístění strojový kód používá absolutní adresy při nahrání kódu na jinou adresu by nefungovalo modifikace absolutních adres podle relokační tabulky nebo vyřešení symbolů relokační tabulka je součástí spustitelného souboru probíhá typicky dvakrát linker – při sestavování výstupního kódu loader – při startu programu (dynamické knihovny)

Dynamické knihovny možnost relokace neví se, kde v adresním prostoru bude místo problém zejména IA-32 (jen 4, resp. 2 GiB) zavaděč rozhodne při startu programu snaha o maximalizaci sdílení knihoven nemusí být možné – kolize s knihovnou, kódem nejvýhodnější rozložení lze vypočítat Linux: prelink, Windows: Microsoft při kompilaci DLL oboje relokace na vhodnou adresy předem zrychlení startu (některých) programů

Loader zavaděč programu do paměti poměrně komplikovaná úloha zejména ve spojitosti s dynamickými knihovnami velký měnící se počet, netriviální optimalizace výsledku typicky samostatný (speciální) program kontrola oprávnění a nároků programu vyřešení nedefinovaných symbolů (+ preload) nakopírování programu a knihoven do paměti nastavení sdílené paměti pro knihovny (cizí, vlastní) předání argumentů z příkazového řádku inicializace registrů a skok na začátek (_start)

PIC a PIE Position Independent Code funguje na jakékoliv adrese nepotřebuje tedy relokaci (resp. modifikaci) vyžadována podpora instrukcí s relativní adresou v CPU využíváno u knihoven Position Independent Executable v Linuxu bezpečnostní opatření kód je nahrán na „náhodnou“ adresu na IA-32 silně omezené množství cílových adres ztěžuje některé útoky (přepsání zásobníku)

Spustitelný soubor program ve vykonatelné podobě typicky soubor se strojovým kódem různé formáty (ELF, EXE, COM, ...) též bytecode (Java) nebo skript (interpretace) specifické odlišení od ostatních souborů unixové systémy: nastaveno oprávnění „spustitelný“ Windows: přípona .EXE, .COM, ale též .DLL a další specifický obsah pro danou platformu, architekturu systémová volání, instrukční sada, metadata → ABI (binární rozhraní) → též Wine na Linuxu

ELF Executable and Linkable Format původně pro Unix System V jako definované ABI 1999 – zvoleno pro unixové systémy spustitelné soubory, sdílené knihovny, object kód, core flexibilní a rozšiřitelný formát hlavička, segmenty, sekce, data není vztažen k jedné architektuře Linux, PlayStation, Nintendo, OpenVMS, ... nástroje: readelf, objdump, file

EXE Executable (formát a přípona souboru) několik variant DOS (MZ, NE), Windows (NE, LX, PE), OS/2 (LE, LX) mnoho dalších interních variant, ale i komprimované atd. Windows EXE má na začátku MZ, který vypíše zhruba: „Tento program nelze spustit v prostředí DOSu“ kromě metadat a kódu i další data („resources“) ikony, bitmapy, fonty, HTML dokument, ... sekce pro různé platformy (viz výše) PE – Portable Executable modifikovaný unixový COFF formát

COM Command file (formát a přípona souboru) dědictví z CP/M (v DOS, Windows) tj. též formát spustitelného souboru (16bitový kód) neplést s doménou .com (např. www.google.com) závislý na NTVDM (není na 64bitových systémech) bez hlavičky, jen strojový kód a data velikost omezena na 0xFF00 (65280 bajtů) nahrán od adresy 0x0100 COMMAND.COM shell (interpret příkazového řádku) pro DOS

DLL implementace sdílených knihoven též přípony .OCX (ActiveX control), .DRV (ovladač) stejný formát, jako EXE → PE verze není součástí názvu problémy koexistence různých verzí → DLL hell Microsoft neposkytuje správu, aktualizace atd. snadno sdílitelné mezi stejnými aplikacemi nesnadno sdílitelné mezi různými aplikacemi COM model rozšiřuje koncept DLL knihoven volání funkce v DLL knihovně (jako dlopen v POSIXu) rozšířeno na volání mezi procesy nebo i mezi počítači

Ladění hledání chyb v programech (bug → debugging) testování programu (tzv. QA) ladící výpisy (doplňující hlášení programu) ladící nástroje (debugger, speciální knihovny, ...) atd. v nižších jazycích → skryté potíže přepsání části paměti → obtížná reprodukovatelnost breakpoint bod přerušení běhu programu traceback ladící výpis, vyšší jazyky odchytávání výjimek vzdálené ladění, post-mortem (core), anti- debugging

Výpis obrazu paměti tzv. core dump zachycení stavu programu v určitém okamžiku typicky při havárii včetně souvisejících údajů registry CPU, prostředí programu, stav zásobníku, ... lze však prakticky v jakémkoliv okamžiku dříve používáno pro CPU bez podpory ladění analýza speciálním nástrojem (debugger) původně jen lineární obsah paměti dnes např. formát ELF z bezpečnostních důvodů typicky vypnuto výpis paměti jádra při pádu OS – po síti

Systém pro sledování chyb typicky databáze uživatel hlásí potíže přidělení technikovi komunikace technik – uživatel forma vyřešení problému „not a bug“, „deffer“, „fixed“, „on QA“, atd. umožňuje statistické zpracování v které části programu jsou kritické chyby které chyby se změní na „vlastnosti“ někdy je odstranění chyby bolestivější, než ignorování

Logování a trasování logování záznam činnosti (pro správce systému) tedy „co program udělal“ srozumitelné bez pochopení fungování programu využívá specifický subsystém Unix: syslog, Windows: Event Logger trasování slouží k ladění a diagnostice využíváno při vývoji software (i modif. zdroj. kódu) záznam (mezi) akcí nebo okolností předpokládá přítomnost vývojáře

Profilování slouží pro optimalizaci programu využívá speciální nástroje za běhu programu analýza využití kódu nebo paměti měření doby vykonávání úseků kódu (funkcí) záznam volání knihovních funkcí (prof) vytváření grafického záznamu (grafy) instrumentace modifikování zdrojového kódu modifikace binárního tvaru

Běhové prostředí zajišťuje běh (přeloženého) programu součást spustitelného souboru např. pro Borland Pascal (pro DOS) samostatná komponenta pro komplikovanější prostředí a jazyky JRE (Java Runtime Environment) .NET, Visual Basic, … zajišťuje přetypování proměnných, ošetření výjimek (např. dělení nulou), plánování procesoru (Win16), (základní) knihovní funkce, interpretaci kódu a podobně