Код операції, операційний код, опкод — частина машинної мови, яка називається інструкцією та визначає операцію, яка повинна бути виконана процесором.
Визначення та формат кодів інструкцій залежить від системи команд процесора (який може бути як головним процесором, так і більш спеціалізованим для роботи в будь-якої конкретної області). На відміну від самого опкода, інструкція зазвичай має одне або більше визначень для операндів (тобто даних) над якими має виконуватися операція, хоча деякі операції можуть мати явні операнди або зовсім їх не мати. Існують набори інструкцій з схожими полями постійного розміру для опкода та визначень операндів, в той час як інші (архітектура x86, наприклад) мають складнішу структуру з змінною довжиною.[1]
Залежно від архітектури, операнди можуть бути значеннями регістрів, значеннями стека, іншими значеннями в пам'яті, портами введення-виведення, та іншими, визначення та доступ до яких здійснюється за допомогою різноманітних методів адресації. Типи операцій включають в себе арифметичні дії, копіювання даних, логічні операції, інші програмні конструкції, на відміну від спеціальних інструкцій (таких як cpuid та інші).
Мова асемблера
Мова асемблера, або просто асемблер — низькорівнева мова програмування, яка використовує мнемоніку, інструкції та операнди для представлення машинного коду. Це покращує читаність при збереженні повного контролю над машинними інструкціями. Більша частина цього програмується на мовах високого рівня, на яких простіше писати об'ємний код. Такі мови необхідно компілювати для перекладу на мову, яку розуміє машина, або запускати за допомогою інших програм, скомпільованих на мові машини.[2]
Програмні набори інструкцій
Опкод можна знайти і в так званому байт-коді та інших уявленнях, розроблених скоріше для програмних інтерпретаторів, ніж для апаратного забезпечення. Ці програмні набори інструкцій часто задіюють кілька вищорівневі[що?] типи даних та операції, ніж більшість апаратних аналогів, але, тим не менш, вони засновані на тих же принципах. Прикладами може послужити Java Virtual Machine (JVM) мови програмування Java, байт-код, що використовується в Emacs для скомпільованого коду Лісп та багато інших.[3]
Примітки