close

Opcode

Salt la navigare Salt la căutare

În informatică, un cod operațional ( codul operațional , codul operațional ) este o porțiune a unei instrucțiuni în limbajul mașinii care specifică operația care trebuie efectuată. Lungimea și formatul codului sunt aranjate în setul de instrucțiuni al procesorului în cauză (care poate fi un CPU generic sau o unitate de procesare mai specializată ). Pe lângă același cod operațional, o instrucțiune are în mod normal și unul sau mai mulți identificatori pentru operanzii (de exemplu data ) asupra cărora trebuie să acționeze operația; trebuie remarcat faptul că unele operații pot avea operanzi impliciti sau deloc operanzi.

Există seturi de instrucțiuni cu câmpuri aproape uniforme pentru opcode și specificatorii de operanzi, precum și altele ( arhitectura x86 de exemplu) cu o structură de lungime variabilă mai complicată. Un exemplu ar fi numărul 0001, codul operațional care îi spune computerului să adauge (ADD). [1]

În funcție de arhitectură, operanzii pot fi valori în registre, valori în stivă, alte valori în memorie, porturi I/O etc., specificate și accesibile folosind un model de adresare mai mult sau mai puțin complex. Tipurile de operații includ operații aritmetice, operațiuni de copiere a datelor, operații logice și controlul programelor, cum ar fi instrucțiuni speciale (cum ar fi CPUID și altele).

Asamblare

Asamblarea este un limbaj de programare de nivel scăzut care utilizează instrucțiuni mnemonice și operanzi pentru a reprezenta codul mașină. Acest lucru îmbunătățește lizibilitatea, menținând în același timp un control precis asupra instrucțiunilor mașinii. Majoritatea programării de astăzi se realizează folosind limbaje de programare de nivel înalt [2] [3] care sunt de obicei mai ușor de citit și de scris. Aceste limbaje trebuie să fie compilate (traduse în limbajul mașinii) sau, în limbaje de scripting , rulate prin alte executabile compilate. [4]

Seturi de instrucțiuni software

Opcodes pot fi găsite și în ceea ce se numește cod de octet și alte reprezentări adresate unui interpret software, mai degrabă decât unui dispozitiv hardware. Aceste seturi de instrucțiuni bazate pe software folosesc adesea tipuri de date și operațiuni de nivel puțin mai ridicat decât omologii lor hardware, dar sunt totuși construite pe modele similare. Exemple sunt limbajul Java cu Java Virtual Machine (JVM), bytecode utilizat în GNU Emacs pentru codul LISP compilat , .Net Common Intermediate Language (CIL) și multe altele. [5]

Note