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. ^ аб Бэррон, Дэвид Уильям (1978) [1971, 1969]. «2.1. Символические инструкции». Написано в Саутгемптонском университете , Саутгемптон, Великобритания. Во Флоретине, Дж. Джон (ред.). Сборщики и грузчики . Компьютерные монографии (3-е изд.). Нью-Йорк, США: Elsevier North-Holland Inc., с. 7. ISBN 0-444-19462-2. LCCN  78-19961.(xii+100 страниц)
  2. ^ Аб Тиба, Сигеру (2007) [1999]. «Javassist, набор инструментов для перевода байт-кода Java». Архивировано из оригинала 02 марта 2020 г. Проверено 27 мая 2016 г.
  3. ^ «Приложение B — Коды машинных инструкций» (PDF) . Руководство по программированию на языке ассемблера MCS-4 — Руководство по программированию микрокомпьютерной системы INTELLEC 4 (предварительное издание). Санта-Клара, Калифорния, США: Корпорация Intel . Декабрь 1973 г. стр. B-1–B-8. MCS-030-1273-1. Архивировано (PDF) из оригинала 01 марта 2020 г. Проверено 02 марта 2020 г.
  4. ^ Рафаэль, Ховард А., изд. (ноябрь 1974 г.). «Функции компьютера: регистр инструкций и декодер» (PDF) . Руководство пользователя MCS-40 для разработчиков логики . Санта-Клара, Калифорния, США: Корпорация Intel . п. viii. Архивировано (PDF) из оригинала 03 марта 2020 г. Проверено 3 марта 2020 г. […] Каждая операция, которую может выполнить процессор, идентифицируется уникальным двоичным числом, известным как код инструкции. […]
  5. ^ Джонс, Дуглас В. (июнь 1988 г.). «Минимальный CISC». Новости компьютерной архитектуры ACM SIGARCH . 16 (3). Нью-Йорк, США: Ассоциация вычислительной техники (ACM): 56–63. дои : 10.1145/48675.48684 . S2CID  17280173.
  6. ^ Домагала, Лукаш (2012). «7.1.4. Тестовый пакет». Применение CLP для планирования команд по модулю для процессоров VLIW. Гливице, Польша: Компьютерная студия Яцека Скалмиерского. С. 80–83 [83]. ISBN 978-83-62652-42-6. Архивировано из оригинала 2 марта 2020 г. Проверено 28 мая 2016 г.
  7. ^ Смотерман, Марк (2016) [2013]. «Проблема с несколькими инструкциями». Школа вычислительной техники Университета Клемсона. Архивировано из оригинала 28 мая 2016 г. Проверено 28 мая 2016 г.
  8. ^ Джонс, Дуглас В. (2016) [2012]. «Минимальный CISC». Онлайн-коллекция компьютерной архитектуры . Айова-Сити, США: Университет Айовы , факультет компьютерных наук. Архивировано из оригинала 02 марта 2020 г. Проверено 28 мая 2016 г.
  9. ^ Шульман, Эндрю (1 июля 2005 г.). «Поиск двоичных клонов с помощью оптических строк и функциональных дайджестов». Журнал доктора Добба . Часть I. Том. 30, нет. 7. ООО «СМП Медиа» . стр. 69–73. ISSN  1044-789X. №374. Архивировано из оригинала 02 марта 2020 г. Проверено 02 марта 2020 г.; Шульман, Эндрю (1 августа 2005 г.). «Поиск двоичных клонов с помощью оптических строк и функциональных дайджестов». Журнал доктора Добба . Часть II. Том. 30, нет. 8. ООО «СМП Медиа» . стр. 56–61. ISSN  1044-789X. №375. Архивировано из оригинала 02 марта 2020 г. Проверено 28 мая 2016 г.; Шульман, Эндрю (1 сентября 2005 г.). «Поиск двоичных клонов с помощью opstrings и функциональных дайджестов». ООО «СМП Медиа» . Часть III. Том. 30, нет. 9. Объединенные Бизнес Медиа . стр. 64–70. ISSN  1044-789X. №376. Архивировано из оригинала 02 марта 2020 г. Проверено 28 мая 2016 г.
  10. ^ abcdef Хеннесси, Джон Л.; Паттерсон, Дэвид А.; Асанович, Крсте ; Бакос, Джейсон Д.; Колвелл, Роберт П.; Бхаттачарджи, Абхишек; Конте, Томас М.; Дуато, Хосе; Франклин, Диана; Гольдберг, Дэвид; Джуппи, Норман П.; Ли, Шэн; Муралиманохар, Навин; Петерсон, Грегори Д.; Пинкстон, Тимоти М.; Ранганатан, Партасарати; Вуд, Дэвид А.; Янг, Клифф; Заки, Амр (23 ноября 2017 г.). Компьютерная архитектура: количественный подход (6-е изд.). Кембридж, Массачусетс, США: Издательство Morgan Kaufmann . ISBN 978-0-12811905-1. ОКЛК  983459758.
  11. ^ Мэнсфилд, Ричард (1983). «Введение: почему машинный язык?». Машинный язык для начинающих. Вычислите! Книги (1-е изд.). Гринсборо, Северная Каролина, США: ВЫЧИСЛИТЕ! Публикации, Инк. , Американские радиовещательные компании, Инк .; ISBN Small System Services, Inc.  0-942386-11-6. Архивировано из оригинала 13 февраля 2008 г. Проверено 28 мая 2016 г.
  12. ^ «Популярность языка программирования» . langpop.com . 25 октября 2013 г. Архивировано из оригинала 11 апреля 2015 г. Проверено 10 октября 2015 г.
  13. ^ Суонсон, Уильям (2001). «Введение в язык ассемблера». Свонсон Технологии . Архивировано из оригинала 2 марта 2020 г. Проверено 10 октября 2015 г.
  14. ^ «Определение байт-кода» . Журнал ПК . Энциклопедия журнала PC Magazine. Архивировано из оригинала 6 октября 2012 г. Проверено 10 октября 2015 г.

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