Strojový kód
Strojový kód je počítačový program napísaný v strojovom jazyku. Používa inštrukčnú sadu konkrétnej počítačovej architektúry. Zvyčajne je zapísaný v binárnej sústave. Strojový kód je najnižšia úroveň softvéru. Ostatné programovacie jazyky sa prekladajú do strojového kódu, aby ich počítač mohol vykonávať.
Inštrukcia hovorí procesu, akú operáciu má vykonať. Každá inštrukcia sa skladá z opkódu (kódu operácie) a operandov. Operandy sú zvyčajne adresy pamäte alebo údaje. Súbor inštrukcií je zoznam opkódov, ktoré má počítač k dispozícii. Strojový kód je to, do čoho sa kompiluje alebo interpretuje kód assembleru a iných programovacích jazykov.
Tvorcovia programov menia kód na iný jazyk alebo strojový kód. Strojový kód sa niekedy nazýva natívny kód. Používa sa, keď sa hovorí o veciach, ktoré fungujú len na niektorých počítačoch.
Zápis strojového kódu
Strojový kód môže byť zapísaný v rôznych formách:
- Pomocou niekoľkých prepínačov. Tým sa generuje postupnosť 1 a 0. To sa používalo v začiatkoch výpočtovej techniky. Od 70. rokov 20. storočia sa už nepoužíva.
- Použitie hexadecimálnehoeditora. To umožňuje používať opcodes namiesto čísla príkazu.
- Používanie asembleru. Asembler je jednoduchší ako opkódy. Ich syntax je jednoduchšia na pochopenie ako strojový jazyk, ale ťažšia ako jazyky vysokej úrovne. Asembler sám preloží zdrojový kód do strojového kódu.
- Používanie vysokoúrovňového programovacieho jazyka umožňuje vytvárať programy, ktoré používajú kód, ktorý sa ľahšie číta a píše. Tieto programy sa prekladajú do strojového kódu. Preklad môže prebiehať v mnohých krokoch. Programy v jazyku Java sa najprv optimalizujú do bajtového kódu. Potom sa pri používaní preloží do strojového jazyka.
Predný panel raného minipočítača s prepínačmi na zadávanie strojového kódu
Typické inštrukcie strojového kódu
V inštrukčnej sade sa zvyčajne nachádza mnoho druhov inštrukcií:
- Aritmetické operácie: Sčítanie, odčítanie, násobenie, delenie.
- Logické operácie: Konjunkcia, disjunkcia, negácia.
- Operácie pôsobiace na jednotlivé bity: Posun bitov doľava alebo doprava.
- Operácie pôsobiace na pamäť: kopírovanie hodnoty z jedného registra do druhého.
- Operácie, ktoré porovnávajú dve hodnoty: väčšia ako, menšia ako, rovná sa.
- Operácie, ktoré kombinujú iné operácie: sčítanie, porovnávanie a kopírovanie, ak sa rovná nejakej hodnote (ako jedna operácia), skok do nejakého bodu programu, ak je register nulový.
- Operácie, ktoré pôsobia na tok programu: skok na nejakú adresu.
- operácie, ktoré konvertujú dátové typy: napr. prevod 32-bitového celého čísla na 64-bitové celé číslo, prevod hodnoty s pohyblivou rádovou čiarkou na celé číslo (skrátením).
Mnohé moderné procesory používajú pre niektoré príkazy mikrokód. Zložitejšie príkazy ho zvyknú používať. Často sa tak deje pri architektúrach CISC.
Pokyny
Každý procesor alebo rodina procesorov má vlastnú sadu inštrukcií. Inštrukcie sú vzory bitov, ktoré zodpovedajú rôznym príkazom, ktoré možno zadať stroju. Súbor inštrukcií je teda špecifický pre triedu procesorov, ktoré používajú (väčšinou) rovnakú architektúru.
Novšie návrhy procesorov často obsahujú všetky inštrukcie predchodcu a môžu sa pridať ďalšie inštrukcie. Niekedy novší návrh zruší alebo zmení význam kódu inštrukcie (zvyčajne preto, že je potrebná na nové účely), čo ovplyvní kompatibilitu kódu; dokonca aj takmer úplne kompatibilné procesory môžu vykazovať mierne odlišné správanie pre niektoré inštrukcie, ale to je zriedka problém.
Systémy sa môžu líšiť aj v ďalších detailoch, ako je usporiadanie pamäte, operačné systémy alebo periférne zariadenia. Pretože program sa zvyčajne spolieha na takéto faktory, rôzne systémy zvyčajne nespustia rovnaký strojový kód, aj keď sa používa rovnaký typ procesora.
Väčšina inštrukcií má jedno alebo viac polí opcode. Určujú základný typ inštrukcie. Ďalšie polia môžu udávať typ operandov, režim adresovania atď. Môžu existovať aj špeciálne inštrukcie, ktoré sú obsiahnuté v samotnom opkóde. Tieto inštrukcie sa nazývajú immediates.
Návrhy procesorov sa môžu líšiť aj v iných ohľadoch. Rôzne inštrukcie môžu mať rôznu dĺžku. Môžu mať aj rovnakú dĺžku. Ak majú všetky inštrukcie rovnakú dĺžku, môže to návrh zjednodušiť.
Príklad
Architektúra MIPS má inštrukcie dlhé 32 bitov. Táto časť obsahuje príklady kódu. Všeobecný typ inštrukcie je v poli op (operácia). Je to najvyšších 6 bitov. Inštrukcie typu J (skok) a I (okamžitý) sú plne uvedené v op. Inštrukcie typu R (register) obsahujú pole funct. Určuje presnú operáciu kódu. Polia používané v týchto typoch sú:
6 5 5 5 5 5 6 bitov [ op | rs | rt | rd |hamt| funct] R-typ [ op | rs | rt | address/immediate] I-typ [ op | target address ] J-typrs, rt a rd označujú operandy registra. shamt udáva veľkosť posunu. Polia address alebo immediate obsahujú priamo operand.
Príklad: sčítajte registre 1 a 2. Výsledok umiestnite do registra 6. Je zakódovaný:
[ op | rs | rt | rd |hamt| funct] 0 1 2 6 0 32 desiatková sústava 000000 00001 00010 00110 00000 100000 binárna sústavaNačítanie hodnoty do registra 8. Vezmite ju z pamäťovej bunky 68 buniek za miestom uvedeným v registri 3:
[ op | rs | rt | address/immediate] 35 3 8 68 decimálne 100011 00011 01000 00000 00001 000100 binárnePrejdite na adresu 1024:
[ op | cieľová adresa ] 2 1024 desiatková 000010 00000 00000 00000 10000 000000 binárnaSúvisiace stránky
- Binárna číselná sústava
- Kvantové počítače
- Súbor inštrukcií
- Počítač s redukovanou inštrukčnou sadou
Otázky a odpovede
Otázka: Čo je to strojový kód?
Odpoveď: Strojový kód je počítačový program napísaný v strojovom jazyku, ktorý používa inštrukčnú sadu konkrétnej počítačovej architektúry a zvyčajne je napísaný v binárnej sústave.
Otázka: Čo je najnižšia úroveň softvéru?
Odpoveď: Strojový kód je najnižšia úroveň softvéru.
Otázka: Ako sa v počítačoch vykonávajú iné programovacie jazyky?
Odpoveď: Ostatné programovacie jazyky sa prekladajú do strojového kódu, ktorý môže počítač vykonávať.
Otázka: Z čoho sa skladá inštrukcia v strojovom kóde?
Odpoveď: Inštrukcia v strojovom kóde sa skladá z opkódu (kódu operácie) a operandu (operandov). Operandy sú zvyčajne adresy pamäte alebo údaje.
Otázka: Čo je inštrukčná sada?
Odpoveď: Súbor inštrukcií je zoznam operačných kódov, ktoré sú k dispozícii pre počítač.
Otázka: Čo robia tvorcovia programov s kódom?
Odpoveď: Tvorcovia programov menia kód na iný jazyk alebo strojový kód.
Otázka: Aký je iný názov pre strojový kód?
Odpoveď: Strojový kód sa niekedy nazýva natívny kód, ktorý sa používa, keď sa hovorí o veciach, ktoré fungujú len na niektorých počítačoch.