Часть машинной инструкции
В вычислительной технике код операции (сокращенно от кода операции ) [1] [2] — это перечисляемое значение , которое определяет операцию, которая должна быть выполнена. Коды операции используются в аппаратных устройствах, таких как арифметико-логические устройства (АЛУ) и центральные процессоры (ЦП), а также в некоторых наборах программных инструкций. В АЛУ код операции напрямую применяется к схеме через шину входного сигнала, тогда как в ЦП код операции — это часть инструкции машинного языка , которая определяет операцию, которая должна быть выполнена.
Процессоры
Коды операций встречаются в инструкциях машинного языка ЦП, а также в некоторых абстрактных вычислительных машинах . В ЦП код операции может называться машинным кодом инструкции , [3] кодом инструкции , [4] слогом инструкции , [5] [6] [7] [8] пакетом инструкций или строкой операций . [9] [2] Для любого конкретного процессора (который может быть обычным ЦП или более специализированным процессором) коды операций определяются архитектурой набора инструкций процессора (ISA), [10] и могут быть описаны с помощью таблицы кодов операций . Типы операций могут включать арифметику , копирование данных, логические операции и управление программой, а также специальные инструкции (например, CPUID ). [10]
В дополнение к коду операции многие инструкции также указывают данные (известные как операнды ), с которыми будет работать операция, хотя некоторые инструкции могут иметь неявные операнды или вообще не иметь их. [10] Некоторые наборы инструкций имеют почти единообразные поля для спецификаторов кода операции и операнда, тогда как другие (например, архитектура x86 ) имеют менее единообразную структуру переменной длины. [10] [11] Наборы инструкций могут быть расширены за счет использования префиксов кода операции, которые добавляют подмножество новых инструкций, состоящих из существующих кодов операции после зарезервированных последовательностей байтов. [ необходима цитата ]
Наборы инструкций программного обеспечения
Опкоды можно найти в так называемых байт-кодах и других представлениях, предназначенных для программного интерпретатора, а не для аппаратного устройства. Эти программные наборы инструкций часто используют типы данных и операции немного более высокого уровня, чем большинство аппаратных аналогов, но тем не менее построены по схожим линиям. Примерами являются байт-код, найденный в файлах классов Java , которые затем интерпретируются виртуальной машиной Java (JVM), байт-код, используемый в GNU Emacs для скомпилированного кода Lisp , .NET Common Intermediate Language (CIL) и многие другие. [12]
Смотрите также
Ссылки
- ^ Barron, David William (1978) [1971, 1969]. "2.1. Символические инструкции". Написано в Университете Саутгемптона , Саутгемптон, Великобритания. В Floretin, J. John (ред.). Assemblers and Loaders . Computer Monographs (3-е изд.). Нью-Йорк, США: Elsevier North-Holland Inc. стр. 7. ISBN 0-444-19462-2. LCCN 78-19961.(xii+100 страниц)
- ^ ab Chiba, Shigeru (2007) [1999]. "Javassist, набор инструментов для трансляции байт-кода Java". Архивировано из оригинала 2020-03-02 . Получено 2016-05-27 .
- ^ "Приложение B - Коды машинных команд" (PDF) . Руководство по программированию на языке ассемблера MCS-4 - Руководство по программированию микрокомпьютерной системы INTELLEC 4 (предварительное издание). Санта-Клара, Калифорния, США: Intel Corporation . Декабрь 1973 г. стр. B-1–B-8. MCS-030-1273-1. Архивировано (PDF) из оригинала 01.03.2020 . Получено 02.03.2020 .
- ^ Рафаэль, Говард А., ред. (ноябрь 1974 г.). «Функции компьютера: регистр инструкций и декодер» (PDF) . Руководство пользователя MCS-40 для проектировщиков логики . Санта-Клара, Калифорния, США: Intel Corporation . стр. viii. Архивировано (PDF) из оригинала 2020-03-03 . Получено 2020-03-03 .
[…] Каждая операция, которую может выполнить процессор, идентифицируется уникальным двоичным числом, известным как код инструкции. […]
- ^ Джонс, Дуглас В. (июнь 1988 г.). «Минимальный CISC». ACM SIGARCH Computer Architecture News . 16 (3). Нью-Йорк, США: Ассоциация вычислительной техники (ACM): 56–63. doi : 10.1145/48675.48684 . S2CID 17280173.
- ^ Домагала, Лукаш (2012). «7.1.4. Тестовый пакет». Применение CLP для планирования команд по модулю для процессоров VLIW. Гливице, Польша: Компьютерная студия Яцека Скалмиерского. С. 80–83 [83]. ISBN 978-83-62652-42-6. Архивировано из оригинала 2020-03-02 . Получено 2016-05-28 .
- ^ Smotherman, Mark (2016) [2013]. «Multiple Instruction Issue» (Проблема множественных инструкций). School of Computing, Clemson University (Школа вычислительной техники, Университет Клемсона). Архивировано из оригинала 2016-05-28 . Получено 2016-05-28 .
- ^ Джонс, Дуглас В. (2016) [2012]. «Минимальная CISC». Коллекция компьютерной архитектуры в Интернете . Айова-Сити, США: Университет Айовы , кафедра компьютерных наук. Архивировано из оригинала 2020-03-02 . Получено 2016-05-28 .
- ^ Шульман, Эндрю (2005-07-01). «Поиск бинарных клонов с помощью Opstrings & Function Digests». Журнал доктора Добба . Часть I. Том 30, № 7. CMP Media LLC . С. 69–73. ISSN 1044-789X. № 374. Архивировано из оригинала 2020-03-02 . Получено 2020-03-02; Шульман, Эндрю (2005-08-01). «Поиск бинарных клонов с помощью Opstrings & Function Digests». Журнал доктора Добба . Часть II. Том 30, № 8. CMP Media LLC . С. 56–61. ISSN 1044-789X. № 375. Архивировано из оригинала 2020-03-02 . Получено 2016-05-28; Шульман, Эндрю (2005-09-01). «Поиск бинарных клонов с помощью Opstrings & Function Digests». CMP Media LLC . Часть III. Том 30, № 9. United Business Media . С. 64–70. ISSN 1044-789X. № 376. Архивировано из оригинала 2020-03-02 . Получено 2016-05-28 .
- ^ abcd Хеннесси, Джон Л.; Паттерсон, Дэвид А.; Асанович, Крсте ; Бакос, Джейсон Д.; Колвелл, Роберт П.; Бхаттачарджи, Абхишек; Конте, Томас М.; Дуато, Хосе; Франклин, Диана; Голдберг, Дэвид; Джуппи, Норман П.; Ли, Шэн; Муралиманохар, Навин; Петерсон, Грегори Д.; Пинкстон, Тимоти М.; Ранганатан, Партасарати; Вуд, Дэвид А.; Янг, Клифф; Заки, Амр (2017-11-23). Архитектура компьютера: количественный подход (6-е изд.). Кембридж, Массачусетс, США: Morgan Kaufmann Publishers . ISBN 978-0-12811905-1. OCLC 983459758.
- ^ Мэнсфилд, Ричард (1983). «Введение: почему машинный язык?». Машинный язык для начинающих. Compute! Books (1-е изд.). Гринсборо, Северная Каролина, США: COMPUTE! Publications, Inc. , American Broadcasting Companies, Inc .; Small System Services, Inc. ISBN 0-942386-11-6. Архивировано из оригинала 2008-02-13 . Получено 2016-05-28 .
- ^ "bytecode Definition". PC Magazine . PC Magazine Encyclopedia. Архивировано из оригинала 2012-10-06 . Получено 2015-10-10 .