У рачунарству, опкод (скраћено од кода операције, такође познат као слог упутства или opstring[1][2][3][4][5][6][7]) је онај део инструкције машинског језика, који дефинише операцију коју треба извршити. Поред опкода, већина инструкција наводи и податке које ће обрадити, у форми операнада. Поред опкодова који се користе у архитектури скупа инструкција различитих процесора, који су хардверски уређаји, они такође могу да се користе у апстрактним рачунарским машинама као део њихове бајт-код спецификације.

ПрегледУреди

Спецификација и формат опкодова наведени су у архитектури скупа инструкција (ISA) процесора, који може бити процесор опште намене или специјализовани процесор. Поред опкода, инструкција обично садржи један или више операнада (тј. податке), над којима се операције извршавају, иако неке операције могу имати подразумеване операнде, а неке их не морају имати уопште. Постоје сетови инструкција који имају готово униформна поља за код операције и операнде, као и друге (као што је х86 архитектура на пример) које имају сложенију структуру променљиве дужине.[8]

У зависности од архитектуре, операнди могу да буду вредности у регистрима, вредности на стеку, друге меморијске вредности, улазно-излазни уређаји и сл., који наведени су и којима се приступа помоћу више или мање сложеног начина адресирања. Врсте операција које постоје укључују аритметичке операције, копирање података, логичке операције, управљање програмима, као и посебне инструкције (на пример CPUID и друге).

Асемблерски језик (асемблер),  је програмски језик ниског нивоа који користи мнемонику, инструкције и операнде за представљање машинског кода. На тај начин се повећава читљивост, а у исто време даје прецизна контрола над машинским инструкцијама. Већина програма се сада прави помоћу програмских језика високог нивоа,[9] који се обично лакше читају и пишу. Ови језици морају бити компајлирани (преведени на језик асемблера), или покренути кроз друге компајлиране програме.[10]

Софтверски инструкциони сетУреди

Опкодови се такође могу наћи у бајт-кодовима, намењеним за програмског преводиоца, а не хардверски уређај. Ови софтверски скупови инструкција често користе податке и операције мало вишег нивоа од већине хардверских решења. Примери укључују бајткод у датотекама Јава класа, који се затим интерпретира на Јава виртуелној машини (ЈВМ), бајткод који се користи у ГНУ Емакс-у за компајлирани ЛИСП код , .NET  Common Intermediate Language , као и многи други.[11]

РеференцеУреди

  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. Приступљено 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. Приступљено 28. 5. 2016. 
  3. ^ Domagała, Łukasz (2012). Application of CLP to instruction modulo scheduling for VLIW processors. Gliwice, Poland: Jacek Skalmierski Computer Studio. стр. 83. ISBN 978-83-62652-42-6. Приступљено 28. 5. 2016. 
  4. ^ Smotherman, Mark (2016) [2013]. „Multiple Instruction Issue”. School of Computing, Clemson University. Архивирано из оригинала на датум 28. 05. 2016. Приступљено 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. Приступљено 28. 5. 2016. 
  7. ^ Chiba, Shigeru (2007) [1999]. „Javassist, a Java-bytecode translator toolkit”. Приступљено 27. 5. 2016. 
  8. ^ „Machine Language For Beginners - Introduction”. atariarchives.org. Архивирано из оригинала на датум 13. 2. 2008. Приступљено 28. 5. 2016. 
  9. ^ „Programming Language Popularity”. langpop.com. 25. 10. 2013. Архивирано из оригинала на датум 11. 4. 2015. Приступљено 10. 10. 2015. 
  10. ^ „Introduction to Assembly Language”. Swansontec.com. Приступљено 10. 10. 2015. 
  11. ^ „bytecode Definition from PC Magazine Encyclopedia”. Pcmag.com. Приступљено 10. 10. 2015.