Codul operației

În calcul , un cod de operație (în limba engleză, opcode , cod de operație , cod mașină , codul de comandă , instrucțiuni silabă , instrucțiune parcelă sau OPSTRING ) este parte a unei investigații în limbaj mașină care specifică operațiunea de a efectua.

Pe lângă opcode-ul în sine, majoritatea instrucțiunilor specifică și datele pe care le vor procesa, sub formă de operanzi .

În plus față de codurile opționale utilizate în seturile de instrucțiuni ale diferitelor unități centrale de procesare , care sunt dispozitive hardware, acestea pot fi utilizate și în codurile secundare ale mașinilor virtuale .

Prezentare generală

Specificațiile și formatul codurilor opționale sunt definite în setul de instrucțiuni al procesorului în cauză, care poate fi o unitate centrală de procesare (CPU) sau o unitate de procesare specializată (cum ar fi un procesor grafic sau GPU). Codurile op pentru un set de instrucțiuni dat pot fi descrise folosind un tabel de cod op care detaliază toate valorile posibile ale codului op. În plus față de opcode-ul în sine, o instrucțiune are în mod normal unul sau mai mulți operatori (adică date) specificatori asupra cărora trebuie să acționeze operațiunea, deși unele operații pot avea operanzi implicați sau chiar nici un operand.

Unele seturi de instrucțiuni au câmpuri de lungime uniformă pentru opcodes și operanzi, în timp ce altele ( arhitectura x86 de exemplu) au o structură mai complicată, cu câmpuri cu lungime variabilă. Seturile de instrucțiuni pot fi extinse prin utilizarea de prefixe opcode care adaugă un subset de instrucțiuni noi compuse din opcodes existente în urma secvențelor de octeți rezervate.

În funcție de arhitectură, operanzii pot fi registre de procesor , valori în stiva de execuție , adrese RAM , porturi I / O etc. specificate și accesibile utilizând moduri de adresare mai mult sau mai puțin complexe. Tipurile de operații includ aritmetica , operațiile logice , manipularea biților , copierea datelor și programul de control și instrucțiuni speciale (cum ar fi instrucțiunea CPUID , care permite cunoașterea anumitor caracteristici ale procesorului ).

Limbaj de asamblare , sau doar asamblare , este un limbaj de programare de nivel scăzut- , care foloseste mnemonice (pentru Opcodes și operanzi) pentru a reprezenta codul mașinii , îmbunătățind lizibilitatea oferind în același timp un control precis asupra instrucțiunilor. Majoritatea programelor de astăzi sunt realizate folosind limbaje de programare la nivel înalt , care sunt mai ușor de citit și de scris. Aceste limbi trebuie să fie compilate (traduse în limbaj de asamblare) sau executate de interpreți .

Seturi de instrucțiuni software

Opcodes sunt, de asemenea, utilizate în bytecodes și alte reprezentări destinate unui interpret software, mai degrabă decât un dispozitiv hardware. Aceste seturi de instrucțiuni pentru software utilizează adesea tipuri de date și operații de nivel ușor mai ridicate decât cele mai multe echivalente hardware, dar sunt totuși construite pe principii similare. Exemplele includ codul secundar găsit în fișierele clasei Java care sunt apoi interpretate de JVM , codul secundar utilizat în GNU Emacs pentru codul Lisp compilat, Limbajul intermediar comun .NET și multe altele.

Referințe

  1. David William Barron , Montatori si încarcatoare , Universitatea din Southampton , Southampton, Marea Britanie, Elsevier Olanda de Nord Inc , coll.  „Monografii computerizate”,1978( 1 st  ed. 1971, 1969) ( ISBN  0-444-19462-2 , LCCN  78-19961 ) , „2.1. Instrucțiuni simbolice ”, p.  7 (xii + 100 de pagini)
  2. Shigeru Chiba , "  Javassist, un Java bytecode translator set de instrumente  " [ arhiva2 martie 2020] ,2007(accesat pe 27 mai 2016 )
  3. Manual de programare a limbajului de asamblare MCS-4 - Manualul de programare a sistemului de microcomputer INTELLEC 4 , Santa Clara, California, SUA, Intel Corporation ,Decembrie 1973, B-1 - B-8  p. , "Anexa B - Coduri de mașini de instrucțiuni"
  4. MCS-40 Manual de utilizare pentru proiectanții de logică , Santa Clara, California, SUA, Intel Corporation ,Noiembrie 1974, "Funcțiile unui computer: registru de instrucțiuni și decodor", viii :

    „[…] Fiecare operație pe care procesorul o poate efectua este identificată printr-un număr binar unic cunoscut sub numele de cod de instrucțiuni. [...] "

  5. Douglas W. Jones , „  Un minim CISC  ” , Asociația pentru Mașini de Calculat (ACM) , New York, SUA, vol.  16, n o  3,Iunie 1988, p.  56–63 ( DOI  10.1145 / 48675.48684 )
  6. Łukasz Domagała , Aplicarea CLP la programarea modulului de instrucțiuni pentru procesoarele VLIW , Gliwice, Polonia, Jacek Skalmierski Computer Studio,2012, 80–83 [83]  p. ( ISBN  978-83-62652-42-6 , citit online [ arhiva de2 martie 2020] ), „7.1.4. Benchmark continuat »
  7. Mark Smotherman , "  Număr de instrucțiuni multiple  " [ arhivă din28 mai 2016] , Școala de calcul, Universitatea Clemson,2016(accesat la 28 mai 2016 )
  8. Douglas W. Jones , "  Un minim CISC  " [ arhiva din2 martie 2020] , pe Colecția on-line de arhitectură a computerelor , Iowa City, SUA, Universitatea din Iowa , Departamentul de Informatică,2016(accesat la 28 mai 2016 )
  9. Andrew Schulman , „  Găsirea clonelor binare cu opstrings și funcții Digest  ” , CMP Media LLC , vol.  30, nr .  7,1 st iulie 2005, p.  69–73 ( ISSN  1044-789X , citit online [ arhiva de2 martie 2020] , accesat la 2 martie 2020 ); Andrew Schulman , „  Găsirea clonelor binare cu opstrings și funcții digest  ” , CMP Media LLC , vol.  30, n o  8,1 st august 2005, p.  56–61 ( ISSN  1044-789X , citit online [ arhiva din2 martie 2020] , accesat la 28 mai 2016 ); Andrew Schulman , „  Găsirea clonelor binare cu opstrings și funcții Digest  ” , United Business Media , vol.  30, nr .  9,1 st septembrie 2005, p.  64–70 ( ISSN  1044-789X , citit online [ arhiva de2 martie 2020] , accesat la 28 mai 2016 )
  10. Arhitectura calculatoarelor: O abordare cantitativă , Cambridge, Massachusetts, Statele Unite ale Americii, Morgan Kaufmann Publishers ,23 noiembrie 2017( ISBN  978-0-12811905-1 , OCLC  983459758 )
  11. Richard Mansfield , Limbaj automat pentru începători , Greensboro, Carolina de Nord, SUA, COMPUTE! Publications, Inc. , American Broadcasting Companies, Inc ; Small System Services, Inc. , col.  „  Calculează! Cărți  ",1983( ISBN  0-942386-11-6 , citit online [ arhiva de13 februarie 2008] ), „Introducere: De ce Limbajul Mașinii? "
  12. "  Popularitatea limbajului de programare  " [ arhiva din11 aprilie 2015] , pe langpop.com ,25 octombrie 2013(accesat la 10 octombrie 2015 )
  13. William Swanson , „  Introducere în limbajul asamblării  ” [ arhiva din2 martie 2020] , pe Swanson Technologies ,2001(accesat la 10 octombrie 2015 )
  14. (în) „  Definiție cod bytec  ” [ arhivă15 septembrie 2008] (accesat la 10 octombrie 2015 )