Strojový kód
Strojový kód je počítačový program napsaný ve strojovém jazyce. Používá instrukční sadu konkrétní počítačové architektury. Obvykle je zapsán v binární soustavě. Strojový kód je nejnižší úrovní softwaru. Ostatní programovací jazyky se překládají do strojového kódu, aby je počítač mohl spustit.
Instrukce říká procesu, jakou operaci má provést. Každá instrukce se skládá z opkódu (kódu operace) a operandů. Operandy jsou obvykle adresy paměti nebo data. Instrukční sada je seznam opkódů, které má počítač k dispozici. Strojový kód je to, do čeho se kompiluje nebo interpretuje kód assembleru a dalších programovacích jazyků.
Tvůrci programů převádějí kód do jiného jazyka nebo strojového kódu. Strojový kód se někdy nazývá nativní kód. Ten se používá, když se mluví o věcech, které fungují jen na některých počítačích.
Zápis strojového kódu
Strojový kód může být zapsán v různých formách:
- Pomocí řady přepínačů. Tím se generuje posloupnost 1 a 0. To se používalo v počátcích výpočetní techniky. Od 70. let 20. století se již nepoužívá.
- Použití editoruHex. Ten umožňuje místo čísla příkazu použít opcodes.
- Použití assembleru. Asembler je jednodušší než opcodes. Jejich syntaxe je srozumitelnější než strojový jazyk, ale obtížnější než jazyky vyšší úrovně. Assembler sám přeloží zdrojový kód do strojového kódu.
- Použití vysokoúrovňového programovacího jazyka umožňuje vytvářet programy, které používají kód, který se snadněji čte a píše. Tyto programy se překládají do strojového kódu. Překlad může probíhat v mnoha krocích. Programy v jazyce Java jsou nejprve optimalizovány do bajtového kódu. Poté je při použití přeložen do strojového jazyka.
Přední panel raného minipočítače s přepínači pro zadávání strojového kódu
Typické instrukce strojového kódu
V instrukční sadě se obvykle nachází mnoho druhů instrukcí:
- Aritmetické operace: Sčítání, odčítání, násobení, dělení.
- Logické operace: Konjunkce, disjunkce, negace.
- Operace působící na jednotlivé bity: Posun bitů doleva nebo doprava.
- Operace s pamětí: kopírování hodnoty z jednoho registru do druhého.
- Operace, které porovnávají dvě hodnoty: větší než, menší než, rovno.
- Operace, které kombinují jiné operace: sčítání, porovnávání a kopírování, pokud se rovná nějaké hodnotě (jako jedna operace), skok do nějakého bodu programu, pokud je registr nulový.
- Operace, které působí na tok programu: skok na nějakou adresu.
- Operace, které převádějí datové typy: např. převod 32bitového celého čísla na 64bitové celé číslo, převod hodnoty s pohyblivou řádovou čárkou na celé číslo (zkrácením).
Mnoho moderních procesorů používá pro některé příkazy mikrokód. Složitější příkazy jej obvykle používají. Často se tak děje u architektur CISC.
Pokyny
Každý procesor nebo rodina procesorů má vlastní instrukční sadu. Instrukce jsou vzory bitů, které odpovídají různým příkazům, jež lze stroji zadat. Instrukční sada je tedy specifická pro třídu procesorů používajících (většinou) stejnou architekturu.
Novější návrhy procesorů často obsahují všechny instrukce předchůdce a mohou přidávat další instrukce. Někdy novější návrh zruší nebo změní význam kódu instrukce (obvykle proto, že je potřeba pro nové účely), což ovlivní kompatibilitu kódu; dokonce i téměř zcela kompatibilní procesory mohou vykazovat mírně odlišné chování některých instrukcí, ale to je zřídkakdy problém.
Systémy se mohou lišit i v dalších detailech, například v uspořádání paměti, operačních systémech nebo periferních zařízeních. Protože program obvykle závisí na těchto faktorech, různé systémy obvykle neprovádějí stejný strojový kód, i když je použit stejný typ procesoru.
Většina instrukcí má jedno nebo více polí opcode. Ta určují základní typ instrukce. Další pole mohou udávat typ operandů, režim adresování atd. Mohou existovat i speciální instrukce, které jsou obsaženy v samotném opkódu. Tyto instrukce se nazývají immediates.
Návrhy procesorů se mohou lišit i v jiných ohledech. Různé instrukce mohou mít různou délku. Mohou mít také stejnou délku. Pokud mají všechny instrukce stejnou délku, může to návrh zjednodušit.
Příklad
Architektura MIPS má instrukce dlouhé 32 bitů. Tato část obsahuje příklady kódu. Obecný typ instrukce je v poli op (operace). Jedná se o nejvyšších 6 bitů. Instrukce typu J (jump) a I (immediate) jsou plně dány op. Instrukce typu R (registr) obsahují pole funct. To určuje přesnou operaci kódu. Pole používaná v těchto typech jsou:
6 5 5 5 5 6 bitů [ op | rs | rt | rd |shamt| funct] R-typ [ op | rs | rt | adresa/immediate] I-typ [ op | cílová adresa ] J-typrs, rt a rd označují operandy registru. shamt udává velikost posunu. Pole address nebo immediate obsahují přímo operand.
Příklad: sečtěte registry 1 a 2. Výsledek umístěte do registru 6. Je zakódován:
[ op | rs | rt | rd |shamt| funct] 0 1 2 6 0 32 decimální 000000 00001 00010 00110 00000 100000 binárníNačtení hodnoty do registru 8. Vezměte ji z paměťové buňky 68 buněk za místem uvedeným v registru 3:
[ op | rs | rt | address/immediate] 35 3 8 68 decimální 100011 00011 01000 00000 00001 000100 binárníPřejděte na adresu 1024:
[ op | cílová adresa ] 2 1024 desítková 000010 00000 00000 00000 10000 000000 binárníSouvisející stránky
- Binární číselná soustava
- Kvantové počítače
- Sada instrukcí
- Počítač s redukovanou instrukční sadou
Otázky a odpovědi
Otázka: Co je to strojový kód?
Odpověď: Strojový kód je počítačový program napsaný ve strojovém jazyce, který používá instrukční sadu určité počítačové architektury a je obvykle zapsán v binární soustavě.
Otázka: Co je nejnižší úroveň softwaru?
Odpověď: Strojový kód je nejnižší úrovní softwaru.
Otázka: Jak se v počítačích provádějí jiné programovací jazyky?
Odpověď: Ostatní programovací jazyky se překládají do strojového kódu, který může počítač spustit.
Otázka: Z čeho se skládá instrukce ve strojovém kódu?
Odpověď: Instrukce ve strojovém kódu se skládá z opkódu (kódu operace) a operandů. Operandy jsou obvykle adresy paměti nebo data.
Otázka: Co je to instrukční sada?
Odpověď: Instrukční sada je seznam opkódů dostupných pro počítač.
Otázka: Co dělají tvůrci programů s kódem?
Odpověď: Tvůrci programů mění kód na jiný jazyk nebo strojový kód.
Otázka: Jaký je jiný název pro strojový kód?
Odpověď: Strojový kód se někdy nazývá nativní kód, který se používá, když se mluví o věcech, které fungují jen na některých počítačích.