Opkód
Author
Albert FloresOpkód (z anglického opcode jako kalková zkratka z operační kód) je v rámci strojového kódu ta část strojové instrukce, která určuje prováděnou operaci, tedy ta část, která neurčuje operandy. Opkódy jednotlivých instrukcí jsou specifické pro danou instrukční sadu. Podobně jako na fyzických procesorech přitom fungují opkódy také v bajtkódu na virtuálních strojích.
V jazyce symbolických adres odpovídají opkódům krátká mnemotechnická slova typicky vzniklá jako zkratky z anglického popisu funkce dané instrukce.
Příklady
Instrukce pro sčítání mívá zkratku add (z anglického ) či jí podobnou. Na platformě x86 je jejím opkódem bajt o hodnotě 0xD5 (zapsáno v šestnáctkové soustavě).
Nulová operace mívá nejčastěji zkratku nop z anglického . Na platformě x86 je jejím opkódem bajt o hodnotě 0x80. +more Na platformě Z80 je jejím opkódem 0x00. Ani v jednom případě nemá instrukce žádné parametry, tedy opkód je její jediná část. Na platformě RISC-V instrukce nop nemá vlastní opkód, neboť je tato zkratka jen překládána na addi x0, x0, 0, tedy sčítací instrukci, která má za úkol přičíst nulu do speciálního virtuálního registru, jehož hodnota je vždy rovna nule - tedy ve skutečnosti neudělá nic.
Platforma ARM má proměnlivou délku opkódu 4-8 bitů (přičemž chování některých instrukcí je ještě určeno dalšími doplňujícími bity, které nejsou považovány za operandy).
Nedefinované opkódy
Jednotlivé instrukce mají své opkódy, tedy číselné hodnoty, ale zejména v historických instrukčních sadách byly některé číselné hodnoty, které nebyly opkódem žádné instrukce. Pokud procesor narazí při zpracování na takový opkód, dochází k výjimce, obvykle ve formě přerušení neplatný opkód.