Informatika / programování Od nápadu k programu (*.exe) KIT.PEF.CZU
v životě
v životě problém
v životě problém nápad
v životě problém nápad postup
v životě problém nápad postup realizace
v životě problém nápad postup realizace nezdar ?
v životě problém nápad postup realizace nezdar ?
v informatice problém nápad algoritmus realizace nezdar ?
v informatice problém nápad algoritmus program nezdar ?
v informatice problém nápad algoritmus program nezdar ?
něco musíte sami problém nápad
( když máte rozmyšleno ) a pak s počítačem problém nápad algoritmus ( když máte rozmyšleno )
spustíte editor problém nápad algoritmus EDITOR
vytvoříte zdrojovou formu ve zvoleném programovacím jazyku napíšete program problém nápad algoritmus prg.src EDITOR vytvoříte zdrojovou formu ve zvoleném programovacím jazyku
spustíte překladač problém nápad algoritmus prg.src EDITOR COMPILER
vznikne meziforma *.obj problém nápad prg.obj algoritmus prg.src EDITOR COMPILER lidsky čitelná zdrojová forma programu je převedena do binárního tvaru, blízkého strojovému kódu počítače
a vedlejší produkty problém nápad prg.obj algoritmus prg.src EDITOR COMPILER prg.err prg.lst prg.xrf kromě protokolu o chybách může překladač poskytnout např. tabulku křížových odkazů (místa použití jednotlivých proměnných)
spustíte linker problém nápad prg.obj algoritmus prg.src EDITOR COMPILER LINKER sys.lib prg.err prg.lib prg.lst prg.xrf při linkování dochází mj. k připojení knihovních podprogramů
vznikne relokativní (přemístitelná) forma problém nápad prg.obj prg.rel algoritmus prg.src EDITOR COMPILER LINKER sys.lib prg.err prg.lib prg.lst prg.xrf
a různé doplňky problém nápad prg.obj prg.rel algoritmus prg.src EDITOR COMPILER LINKER sys.lib prg.err prg.err prg.lib prg.lst prg.xrf prg.map i při sestavování programu vznikají užitečné vedlejší produkty
potom lokátorem problém nápad prg.obj prg.rel algoritmus prg.src EDITOR COMPILER LINKER LOCATER prg.err prg.err prg.lst prg.xrf prg.map
vytvoříte verzi absolutní problém nápad prg.obj prg.rel prg.abs algoritmus prg.src EDITOR COMPILER LINKER LOCATER prg.err prg.err prg.lst prg.xrf prg.map „absolutní“ verze programu bude správně fungovat jen tehdy, pokud bude umístěna do předpokládaného místa v paměti a tam spuštěna
toto je použitelné jen pro specielní případy problém nápad prg.obj prg.rel prg.abs algoritmus prg.src EDITOR COMPILER LINKER LOCATER Na absolutní adrese musí běžet např. BIOS nebo jádro operačního systému. Ostatní aplikace se spouštějí s relativní adresou (tzn. je jedno kam se do paměti nahraje). prg.err prg.err prg.err prg.lst prg.xrf prg.map prg.map …tak to bylo kdysi, ale je to tak i dnes, např. u BIOSu
ale může to být i jinak problém nápad prg.obj prg.rel prg.abs algoritmus prg.src EDITOR COMPILER LINKER prg.err prg.lst prg.xrf
směrem k *.exe problém nápad prg.obj algoritmus prg.src prg.lib EDITOR COMPILER LINKER sys.lib prg.err prg.exe prg.lst prg.xrf při linkování dochází mj. k přípravě vazeb mezi programem a systémem (např. připojení podprogramů pro volání služeb)
( *.EXE je relokativní, umístění v paměti není stanoveno ) vznik *.exe problém nápad prg.obj algoritmus prg.src prg.lib EDITOR COMPILER LINKER sys.lib prg.err prg.err prg.exe prg.lst prg.xrf prg.map ( *.EXE je relokativní, umístění v paměti není stanoveno )
Zajímavost *.exe je LTL problém nápad prg.obj algoritmus prg.src prg.lib EDITOR COMPILER LINKER sys.lib prg.err prg.err prg.exe prg.lst prg.xrf prg.map Jednou ze služeb operačního systému je, že umí pracovat s LTL (Load Time Locatable) moduly. SYSTÉM
spuštění *.exe problém nápad prg.obj algoritmus prg.src prg.lib EDITOR COMPILER LINKER sys.lib Takto vypadá spuštění aplikace. TASK = úloha. prg.err prg.err prg.exe TASK prg.lst prg.xrf prg.map Při spouštění úlohy (TASKu) proběhne lokátování, tj. přepočty vázané na polohu kódu v paměti. SYSTÉM
ladění programu bug … štěnice, veš, skrytá chyba problém nápad prg.obj algoritmus prg.src prg.lib EDITOR COMPILER LINKER sys.lib prg.err prg.err prg.exe prg.lst prg.xrf prg.map DEBUGGER
integrované vývojové prostředí IDE - Integrated Development Environment problém nápad prg.obj algoritmus prg.src prg.lib EDITOR COMPILER LINKER sys.lib IDE prg.err prg.err prg.exe prg.lst prg.xrf prg.map MAKER DEBUGGER
a spouští dílčí procesy IDE běží jako TASK a spouští dílčí procesy problém nápad prg.obj algoritmus prg.src prg.lib EDITOR COMPILER LINKER sys.lib IDE prg.err prg.err prg.exe prg.lst prg.xrf prg.map MAKER DEBUGGER SYSTÉM
celé schema IDE problém nápad prg.obj prg.rel prg.abs algoritmus prg.src EDITOR COMPILER LINKER LOCATER IDE prg.err prg.err prg.exe TASK prg.lst prg.xrf prg.map MAKER DEBUGGER SYSTÉM
velké programy problém nápad prg.obj algoritmus prg.src prg.lib EDITOR COMPILER LINKER sys.lib prg.err prg.err prg.exe prg.lst prg.xrf prg.map DEBUGGER SYSTÉM
formát *.EXE souboru hlavička obsahuje informace o místech, kde je nutno provést po natažení do paměti přepočet a opravu kódu je zde mj. i údaj o tom, kolik paměti má být programu přiděleno a kde leží start programu (tj. adresa první instrukce)
? problém dotazy ….