Opkod

S Vikipedije, slobodne enciklopedije

U računarstvu, opkod (skraćeno od koda operacije, takođe poznat kao slog uputstva ili opstring[1][2][3][4][5][6][7]) je onaj deo instrukcije mašinskog jezika, koji definiše operaciju koju treba izvršiti. Pored opkoda, većina instrukcija navodi i podatke koje će obraditi, u formi operanada. Pored opkodova koji se koriste u arhitekturi skupa instrukcija različitih procesora, koji su hardverski uređaji, oni takođe mogu da se koriste u apstraktnim računarskim mašinama kao deo njihove bajt-kod specifikacije.

Pregled[uredi | uredi izvor]

Specifikacija i format opkodova navedeni su u arhitekturi skupa instrukcija (ISA) procesora, koji može biti procesor opšte namene ili specijalizovani procesor. Pored opkoda, instrukcija obično sadrži jedan ili više operanada (tj. podatke), nad kojima se operacije izvršavaju, iako neke operacije mogu imati podrazumevane operande, a neke ih ne moraju imati uopšte. Postoje setovi instrukcija koji imaju gotovo uniformna polja za kod operacije i operande, kao i druge (kao što je h86 arhitektura na primer) koje imaju složeniju strukturu promenljive dužine.[8]

U zavisnosti od arhitekture, operandi mogu da budu vrednosti u registrima, vrednosti na steku, druge memorijske vrednosti, ulazno-izlazni uređaji i sl., koji navedeni su i kojima se pristupa pomoću više ili manje složenog načina adresiranja. Vrste operacija koje postoje uključuju aritmetičke operacije, kopiranje podataka, logičke operacije, upravljanje programima, kao i posebne instrukcije (na primer CPUID i druge).

Asemblerski jezik (asembler),  je programski jezik niskog nivoa koji koristi mnemoniku, instrukcije i operande za predstavljanje mašinskog koda. Na taj način se povećava čitljivost, a u isto vreme daje precizna kontrola nad mašinskim instrukcijama. Većina programa se sada pravi pomoću programskih jezika visokog nivoa,[9] koji se obično lakše čitaju i pišu. Ovi jezici moraju biti kompajlirani (prevedeni na jezik asemblera), ili pokrenuti kroz druge kompajlirane programe.[10]

Softverski instrukcioni set[uredi | uredi izvor]

Opkodovi se takođe mogu naći u bajt-kodovima, namenjenim za programskog prevodioca, a ne hardverski uređaj. Ovi softverski skupovi instrukcija često koriste podatke i operacije malo višeg nivoa od većine hardverskih rešenja. Primeri uključuju bajtkod u datotekama Java klasa, koji se zatim interpretira na Java virtuelnoj mašini (JVM), bajtkod koji se koristi u GNU Emaks-u za kompajlirani LISP kod , .NET  Common Intermediate Language , kao i mnogi drugi.[11]

Reference[uredi | uredi izvor]

  1. ^ Jones, Douglas W. (2016) [2012]. „A Minimal CISC”. Computer Architecture On-Line Collection. Iowa City, USA: The University of Iowa, Department of Computer Science. Pristupljeno 28. 5. 2016. 
  2. ^ Jones, Douglas W. (1. 6. 1988). „A Minimal CISC”. ACM SIGARCH Computer Architecture News. New York, USA: ACM. 16 (3): 56—63. doi:10.1145/48675.48684. Pristupljeno 28. 5. 2016. 
  3. ^ Domagała, Łukasz (2012). Application of CLP to instruction modulo scheduling for VLIW processors. Gliwice, Poland: Jacek Skalmierski Computer Studio. str. 83. ISBN 978-83-62652-42-6. Pristupljeno 28. 5. 2016. 
  4. ^ Smotherman, Mark (2016) [2013]. „Multiple Instruction Issue”. School of Computing, Clemson University. Arhivirano iz originala 28. 05. 2016. g. Pristupljeno 28. 5. 2016. 
  5. ^ Schulman, Andrew (2005). „Finding Binary Clones with Opstrings & Function Digests”. Dr. Dobb's Journal. 1. 
  6. ^ Schulman, Andrew (2005). „Finding Binary Clones with Opstrings & Function Digests”. Dr. Dobb's Journal. 2. Pristupljeno 28. 5. 2016. 
  7. ^ Chiba, Shigeru (2007) [1999]. „Javassist, a Java-bytecode translator toolkit”. Arhivirano iz originala 02. 03. 2020. g. Pristupljeno 27. 5. 2016. 
  8. ^ „Machine Language For Beginners - Introduction”. atariarchives.org. Arhivirano iz originala 13. 2. 2008. g. Pristupljeno 28. 5. 2016. 
  9. ^ „Programming Language Popularity”. langpop.com. 25. 10. 2013. Arhivirano iz originala 11. 4. 2015. g. Pristupljeno 10. 10. 2015. 
  10. ^ „Introduction to Assembly Language”. Swansontec.com. Pristupljeno 10. 10. 2015. 
  11. ^ „bytecode Definition from PC Magazine Encyclopedia”. Pcmag.com. Arhivirano iz originala 06. 10. 2012. g. Pristupljeno 10. 10. 2015.