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». Архивировано из оригинала 2 марта 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 . Нью-Йорк, США: Ассоциация вычислительной техники (ACM). 16 (3): 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». Онлайн-коллекция компьютерной архитектуры . Айова-Сити, США: Университет Айовы , факультет компьютерных наук. Архивировано из оригинала 2 марта 2020 г. Проверено 28 мая 2016 г.
  9. ^ Шульман, Эндрю (1 июля 2005 г.). «Поиск двоичных клонов с помощью opstrings и функциональных дайджестов». Журнал доктора Добба . Часть I. Том. 30, нет. 7. ООО «СМП Медиа» . стр. 69–73. ISSN  1044-789X. №374. Архивировано из оригинала 2 марта 2020 г. Проверено 02 марта 2020 г.; Шульман, Эндрю (1 августа 2005 г.). «Поиск двоичных клонов с помощью opstrings и функциональных дайджестов». Журнал доктора Добба . Часть II. Том. 30, нет. 8. ООО «СМП Медиа» . стр. 56–61. ISSN  1044-789X. №375. Архивировано из оригинала 2 марта 2020 г. Проверено 28 мая 2016 г.; Шульман, Эндрю (1 сентября 2005 г.). «Поиск двоичных клонов с помощью opstrings и функциональных дайджестов». ООО «СМП Медиа» . Часть III. Том. 30, нет. 9. Объединенные Бизнес Медиа . стр. 64–70. ISSN  1044-789X. №376. Архивировано из оригинала 2 марта 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 г.

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