1gl
Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revizePředchozí verze | |||
| 1gl [2026/08/24 09:25] – [5. Evoluce jazyků] admin | 1gl [2026/08/24 09:26] (aktuální) – stará verze byla obnovena (2026/01/02 12:49) admin | ||
|---|---|---|---|
| Řádek 47: | Řádek 47: | ||
| ---- | ---- | ||
| - | |||
| - | ===== Výhody a nevýhody 1GL ===== | ||
| - | |||
| - | ==== Výhody ==== | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Maximální výkon: | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Strojový kód je vykonáván přímo procesorem, což zajišťuje nejvyšší možnou rychlost. | ||
| - | |||
| - | |||
| - | |||
| - | Minimální režie: | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Nevyžaduje žádný překlad nebo interpretaci, | ||
| - | |||
| - | |||
| - | |||
| - | Plná kontrola nad hardwarem: | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Programátor má úplnou kontrolu nad všemi aspekty procesoru a paměti. | ||
| - | |||
| - | ==== Nevýhody ==== | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Složitost: | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Psaní programů v 1GL je extrémně náročné a náchylné k chybám. | ||
| - | |||
| - | |||
| - | |||
| - | Vyžaduje hluboké znalosti architektury procesoru. | ||
| - | |||
| - | |||
| - | |||
| - | Nízká přenositelnost: | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Programy napsané pro jednu architekturu nejsou kompatibilní s jinými. | ||
| - | |||
| - | |||
| - | |||
| - | Špatná čitelnost: | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Binární kód je pro člověka téměř nečitelný, | ||
| - | |||
| - | |||
| - | |||
| - | Časová náročnost: | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Vývoj programů v 1GL je velmi pomalý ve srovnání s vyššími úrovněmi programovacích jazyků. | ||
| - | |||
| - | |||
| - | |||
| - | ===== Praktické příklady ===== | ||
| - | |||
| - | ==== Příklad 1: Sčítání dvou čísel (x86) ==== | ||
| - | Následující příklad ukazuje, jak sčítat dvě čísla v strojovém kódu pro architekturu x86. Předpokládáme, | ||
| - | |||
| - | ==== Strojový kód (hexadecimální) ==== | ||
| - | 8B C3 ; MOV EAX, EBX ; Zkopíruj hodnotu z EBX do EAX 03 C1 ; ADD EAX, ECX ; Přičti hodnotu z ECX k EAX 89 C1 ; MOV ECX, EAX ; Ulož výsledek do ECX | ||
| - | |||
| - | ==== Vysvětlení ==== | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | **MOV EAX, EBX**: Zkopíruje hodnotu z registru **EBX** do registru **EAX**. | ||
| - | |||
| - | |||
| - | |||
| - | **ADD EAX, ECX**: Přičte hodnotu z registru **ECX** k registru **EAX**. | ||
| - | |||
| - | |||
| - | |||
| - | **MOV ECX, EAX**: Uloží výsledek (v **EAX**) do registru **ECX**. | ||
| - | |||
| - | |||
| - | |||
| - | ==== Příklad 2: Podmíněný skok (x86) ==== | ||
| - | Tento příklad ukazuje, jak implementovat podmíněný skok v strojovém kódu. Předpokládáme, | ||
| - | |||
| - | ==== Strojový kód (hexadecimální) ==== | ||
| - | 39 D8 ; CMP EAX, EBX ; Porovnej EAX a EBX 74 05 ; JE 0x100 ; Skok na 0x100, pokud jsou rovny | ||
| - | |||
| - | ==== Vysvětlení ==== | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | **CMP EAX, EBX**: Porovná hodnoty v registrech **EAX** a **EBX** a nastaví příznaky (flags) podle výsledku. | ||
| - | |||
| - | |||
| - | |||
| - | **JE 0x100**: Pokud jsou hodnoty rovny (příznak **ZF** je nastaven), skočí na adresu **0x100**. | ||
| - | |||
| - | |||
| - | |||
| - | ===== Nástroje pro práci s 1GL ===== | ||
| - | |||
| - | ==== Assemblery ==== | ||
| - | I když 1GL je strojový kód, většina programátorů používá assembler (2GL), který umožňuje psát programy v mnemotechnických zkratkách (např. MOV, ADD), které jsou poté přeloženy do strojového kódu. Příklady assemblerů: | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | NASM (Netwide Assembler) – populární assembler pro x86. | ||
| - | |||
| - | |||
| - | |||
| - | GAS (GNU Assembler) – součást GNU toolchainu. | ||
| - | |||
| - | |||
| - | |||
| - | MASM (Microsoft Macro Assembler) – assembler od Microsoftu. | ||
| - | |||
| - | ==== Debuggery ==== | ||
| - | Pro ladění strojového kódu se používají nástroje jako: | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | GDB (GNU Debugger) – podporuje ladění na úrovni strojového kódu. | ||
| - | |||
| - | |||
| - | |||
| - | OllyDbg – debuger pro Windows, specializovaný na analýzu strojového kódu. | ||
| - | |||
| - | |||
| - | |||
| - | IDA Pro – pokročilý disassembler a debuger. | ||
| - | |||
| - | ==== Emulátory ==== | ||
| - | Pro testování strojového kódu na různých architekturách lze použít emulátory: | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | QEMU – emulátor a virtualizátor, | ||
| - | |||
| - | |||
| - | |||
| - | DOSBox – emulátor pro spouštění starých programů napsaných pro DOS. | ||
| - | |||
| - | |||
| - | |||
| - | ===== Aplikace 1GL v moderním světě ===== | ||
| - | |||
| - | ==== Embedded systémy ==== | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | V mikrořadičích a embedded systémech se stále používá strojový kód pro optimalizaci výkonu a velikosti kódu. | ||
| - | |||
| - | |||
| - | |||
| - | Příklady: firmware pro IoT zařízení, | ||
| - | |||
| - | ==== Operační systémy ==== | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Jádra operačních systémů (např. Linux, Windows) obsahují části napsané přímo ve strojovém kódu pro kritické operace. | ||
| - | |||
| - | |||
| - | |||
| - | Bootloadery (např. GRUB) používají strojový kód pro inicializaci hardwaru. | ||
| - | |||
| - | ==== Bezpečnost a reverse engineering ==== | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Malware analýza: | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Bezpečnostní experti analyzují strojový kód malwaru, aby pochopili jeho chování. | ||
| - | |||
| - | |||
| - | |||
| - | Reverse engineering: | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Strojový kód je často cílem reverse inženýrství, | ||
| - | |||
| - | ==== Výkonně kritické aplikace ==== | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Hry a grafické aplikace: | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Některé části herních engine (např. renderovací smyčky) mohou být optimalizovány pomocí strojového kódu. | ||
| - | |||
| - | |||
| - | |||
| - | Vědecké výpočty: | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Vysokovýkonné výpočty (HPC) někdy využívají strojový kód pro maximalizaci výkonu. | ||
| - | |||
| - | |||
| - | |||
| - | ===== Budoucnost 1GL ===== | ||
| - | |||
| - | ==== Výzvy ==== | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Složitost moderních procesorů: | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Moderní procesory (např. s SIMD, multithreadingem, | ||
| - | |||
| - | |||
| - | |||
| - | Abstrakce a automatizace: | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Většina programátorů dnes používá vysoké úrovně abstrakce (např. Python, Java), což snižuje potřebu psaní strojového kódu. | ||
| - | |||
| - | ==== Příležitosti ==== | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Optimalizace: | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Strojový kód stále hraje roli v oblasti, kde je vyžadován maximální výkon (např. AI akcelerátory, | ||
| - | |||
| - | |||
| - | |||
| - | Vzdělávání: | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Porozumění 1GL pomáhá studentům pochopit, jak počítače fungují na nejnižší úrovni. | ||
| - | |||
| - | |||
| - | |||
| - | Bezpečnost: | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | Znalost strojového kódu je klíčová pro odhalování zranitelností a vývoj bezpečných systémů. | ||
| - | |||
| - | |||
| - | |||
| - | ===== Závěr ===== | ||
| - | Jazyk první generace (1GL) představuje základ počítačového programování. I když je dnes jeho přímé použití vzácné, porozumění strojovému kódu je nezbytné pro hlubší pochopení fungování počítačů, | ||
| - | |||
| - | |||
| - | |||
| - | ===== Odkazy a zdroje ===== | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | [[https:// | ||
| - | |||
| - | |||
| - | |||
| - | [[https:// | ||
| - | |||
| - | |||
| - | |||
| - | [[https:// | ||
| - | |||
| - | |||
| - | |||
| - | [[https:// | ||
| - | |||
| - | |||
| - | |||
| - | ===== Přílohy ===== | ||
| - | |||
| - | ==== Seznam instrukcí x86 ==== | ||
| - | Pro úplný seznam instrukcí x86 viz: | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | [[https:// | ||
| - | |||
| // | // | ||
| * [[it: | * [[it: | ||
1gl.txt · Poslední úprava: autor: admin
