stringtranslate.com

Код операции

В вычислительной технике , опкод [1] [2] (сокращенно от кода операции , [1] также известный как машинный код инструкции , [3] код инструкции , [4] слог инструкции , [5] [6] [7] [8] посылка инструкции или строка операций [9] [2] ) является частью инструкции машинного языка , которая определяет операцию, которая должна быть выполнена. Помимо самого опкода, большинство инструкций также определяют данные, которые они будут обрабатывать, в форме операндов . В дополнение к опкодам, используемым в архитектурах набора инструкций различных ЦП , которые являются аппаратными устройствами, они также могут использоваться в абстрактных вычислительных машинах как часть их спецификаций байт-кода .

Обзор

Спецификации и формат кодов операций изложены в архитектуре набора инструкций ( ISA ) рассматриваемого процессора, который может быть обычным ЦП или более специализированным процессором. [10] Коды операций для заданного набора инструкций могут быть описаны с помощью таблицы кодов операций, в которой подробно описаны все возможные коды операций. Помимо самого кода операции, инструкция обычно также имеет один или несколько спецификаторов для операндов (т. е. данных), на которые должна воздействовать операция, хотя некоторые операции могут иметь неявные операнды или вообще не иметь их. [10] Существуют наборы инструкций с почти одинаковыми полями для кодов операций и спецификаторов операндов, а также другие ( например, архитектура x86 ) с более сложной структурой переменной длины. [10] [11] Наборы инструкций могут быть расширены с помощью префиксов кодов операций, которые добавляют подмножество новых инструкций, состоящих из существующих кодов операций, следующих за зарезервированными последовательностями байтов. [ необходима цитата ]

Операнды

В зависимости от архитектуры операндами могут быть значения регистров , значения в стеке , другие значения памяти , порты ввода -вывода (которые также могут быть отображены в памяти ) и т. д., указанные и доступные с использованием более или менее сложных режимов адресации . [ необходима ссылка ] Типы операций включают арифметику , копирование данных, логические операции и управление программой, а также специальные инструкции (такие как CPUID и другие). [10]

Язык ассемблера , или просто ассемблер , является низкоуровневым языком программирования , который использует мнемонические инструкции и операнды для представления машинного кода . [10] Это повышает читаемость, при этом по-прежнему предоставляя точный контроль над машинными инструкциями. Большая часть программирования в настоящее время выполняется с использованием высокоуровневых языков программирования , [12] которые обычно проще для понимания и написания человеком. [10] Эти языки должны быть скомпилированы (переведены в язык ассемблера) системно - специфичным компилятором или запущены через другие скомпилированные программы. [13]

Наборы инструкций программного обеспечения

Опкоды также можно найти в так называемых байт-кодах и других представлениях, предназначенных для программного интерпретатора, а не для аппаратного устройства. Эти программные наборы инструкций часто используют типы данных и операции немного более высокого уровня, чем большинство аппаратных аналогов, но тем не менее построены по схожим линиям. Примерами являются байт-код, найденный в файлах классов Java , которые затем интерпретируются виртуальной машиной Java (JVM), байт-код, используемый в GNU Emacs для скомпилированного кода Lisp , .NET Common Intermediate Language (CIL) и многие другие. [14]

Смотрите также

Ссылки

  1. ^ ab 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 страниц)
  2. ^ ab Chiba, Shigeru (2007) [1999]. "Javassist, набор инструментов для трансляции байт-кода Java". Архивировано из оригинала 2020-03-02 . Получено 2016-05-27 .
  3. ^ "Приложение B - Коды машинных команд" (PDF) . Руководство по программированию на языке ассемблера MCS-4 - Руководство по программированию микрокомпьютерной системы INTELLEC 4 (предварительное издание). Санта-Клара, Калифорния, США: Intel Corporation . Декабрь 1973 г. стр. B-1–B-8. MCS-030-1273-1. Архивировано (PDF) из оригинала 01.03.2020 . Получено 02.03.2020 .
  4. ^ Рафаэль, Говард А., ред. (ноябрь 1974 г.). «Функции компьютера: регистр инструкций и декодер» (PDF) . Руководство пользователя MCS-40 для проектировщиков логики . Санта-Клара, Калифорния, США: Intel Corporation . стр. viii. Архивировано (PDF) из оригинала 2020-03-03 . Получено 2020-03-03 . […] Каждая операция, которую может выполнить процессор, идентифицируется уникальным двоичным числом, известным как код инструкции. […]
  5. ^ Джонс, Дуглас В. (июнь 1988 г.). «Минимальный CISC». ACM SIGARCH Computer Architecture News . 16 (3). Нью-Йорк, США: Ассоциация вычислительной техники (ACM): 56–63. doi : 10.1145/48675.48684 . S2CID  17280173.
  6. ^ Домагала, Лукаш (2012). «7.1.4. Тестовый пакет». Применение CLP для планирования команд по модулю для процессоров VLIW. Гливице, Польша: Компьютерная студия Яцека Скалмиерского. С. 80–83 [83]. ISBN 978-83-62652-42-6. Архивировано из оригинала 2020-03-02 . Получено 2016-05-28 .
  7. ^ Smotherman, Mark (2016) [2013]. «Проблема множественных инструкций». Школа вычислительной техники, Университет Клемсона. Архивировано из оригинала 28-05-2016 . Получено 28-05-2016 .
  8. ^ Джонс, Дуглас В. (2016) [2012]. "Минимальная CISC". Коллекция компьютерной архитектуры в Интернете . Айова-Сити, США: Университет Айовы , кафедра компьютерных наук. Архивировано из оригинала 2020-03-02 . Получено 2016-05-28 .
  9. ^ Шульман, Эндрю (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 .
  10. ^ abcdef Хеннесси, Джон Л.; Паттерсон, Дэвид А.; Асанович, Крсте ; Бакос, Джейсон Д.; Колвелл, Роберт П.; Бхаттачарджи, Абхишек; Конте, Томас М.; Дуато, Хосе; Франклин, Диана; Голдберг, Дэвид; Джуппи, Норман П.; Ли, Шэн; Муралиманохар, Навин; Петерсон, Грегори Д.; Пинкстон, Тимоти М.; Ранганатан, Партасарати; Вуд, Дэвид А.; Янг, Клифф; Заки, Амр (2017-11-23). ​​Архитектура компьютера: количественный подход (6-е изд.). Кембридж, Массачусетс, США: Morgan Kaufmann Publishers . ISBN 978-0-12811905-1. OCLC  983459758.
  11. ^ Mansfield, Richard (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 .
  12. ^ "Популярность языков программирования". langpop.com . 2013-10-25. Архивировано из оригинала 2015-04-11 . Получено 2015-10-10 .
  13. ^ Swanson, William (2001). "Введение в язык ассемблера". Swanson Technologies . Архивировано из оригинала 2020-03-02 . Получено 2015-10-10 .
  14. ^ "bytecode Definition". PC Magazine . PC Magazine Encyclopedia. Архивировано из оригинала 2012-10-06 . Получено 2015-10-10 .

Дальнейшее чтение