====== Assembler (Jazyk symbolických adres) ====== **Assembler** je nejnižší úroveň programování, jakou může člověk provádět, aniž by musel psát přímo v nulách a jedničkách. Každá rodina procesorů (x86, ARM, RISC-V) má svůj vlastní specifický assembler. ===== 1. Jak assembler funguje? ===== Zatímco jazyky jako C++, Python nebo Java jsou "abstraktní" (neřeší, jak přesně procesor pracuje), v assembleru programátor přímo ovládá: * **Registry:** Extrémně rychlá paměťová místa v CPU (např. [[it_encyklopedie:eax|EAX]]). * **Paměť (RAM):** Přesné adresování dat v operační paměti. * **Vlajky (Flags):** Stavové bity, které říkají, zda byl výsledek operace nula, záporný atd. Program napsaný v assembleru musí být zpracován programem nazývaným **asemblér** (překladač), který textové instrukce převede na binární strojový kód. ===== 2. Ukázka kódu (Architektura x86) ===== Tento jednoduchý kód sečte dvě čísla: MOV EAX, 5 ; Vlož číslo 5 do registru EAX MOV EBX, 10 ; Vlož číslo 10 do registru EBX ADD EAX, EBX ; Sečti hodnoty v EAX a EBX, výsledek (15) ulož do EAX ===== 3. Výhody a nevýhody ===== ^ Vlastnost ^ Popis ^ | **Rychlost** | Extrémní. Dobře napsaný kód v assembleru je nejrychlejší možný software. | | **Velikost** | Minimální. Výsledné soubory jsou velmi malé. | | **Přenositelnost** | Žádná. Kód pro Intel PC nebude fungovat na iPhonu (ARM). | | **Složitost** | Velmi vysoká. Napsání složitého programu trvá mnohem déle než v C#. | ===== 4. Kdy se assembler používá dnes? ===== I když většina aplikací vzniká ve vyšších jazycích, assembler je nepostradatelný v těchto oblastech: * **Ovladače (Drivers):** Přímá komunikace s hardwarem. * **Embedded systémy:** Programování mikročipů v pračkách, automobilech nebo hračkách. * **Jádra operačních systémů:** Části Windows nebo Linuxu, které spravují paměť a procesory. * **Reverzní inženýrství:** Analýza malwaru nebo crackování softwaru pomocí [[it_encyklopedie:disassembler|disassemblerů]]. ===== 5. Slavné asembléry (Nástroje) ===== * **NASM (Netwide Assembler):** Velmi populární, open-source, pro x86. * **MASM (Microsoft Macro Assembler):** Standard pro vývoj pod Windows. * **GAS (GNU Assembler):** Součást balíku GCC, používaný v Linuxu. > **Zajímavost:** První počítačové hry (např. RollerCoaster Tycoon z roku 1999) byly napsány téměř celé v assembleru, aby běžely plynule i na tehdejším slabém hardwaru. Dnes je to u takto velkých projektů téměř nemyslitelné. [[it_encyklopedie:it_vyvoj_rozcestnik|Zpět na Vývoj a Bezpečnost]]