Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

Обзор [ править ]

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

Операнды [ править ]

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

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

Наборы программных инструкций [ править ]

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

См. Также [ править ]

  • Гаджет (последовательность машинных инструкций)
  • Незаконный код операции
  • База данных кодов операций
  • Слог (вычисление)

Ссылки [ править ]

  1. ^ a b Бэррон, Дэвид Уильям (1978) [1971, 1969]. «2.1. Символические инструкции». Написано в Университете Саутгемптона , Саутгемптон, Великобритания. В Floretin, Дж. Джон (ред.). Сборщики и грузчики . Компьютерные монографии (3-е изд.). Нью-Йорк, США: Elsevier North-Holland Inc., стр. 7. ISBN 0-444-19462-2. LCCN  78-19961 . (xii + 100 страниц)
  2. ^ a b Чиба, Сигэру (2007) [1999]. «Javassist, набор инструментов для перевода байт-кода Java» . Архивировано 02 марта 2020 года . Проверено 27 мая 2016 .
  3. ^ «Приложение B - Коды машин инструкций» (PDF) . Руководство по программированию на языке ассемблера MCS-4 - Руководство по программированию микрокомпьютерной системы INTELLEC 4 (предварительное издание). Санта-Клара, Калифорния, США: Intel Corporation . Декабрь 1973 г. С. B-1 – B-8. MCS-030-1273-1. Архивировано (PDF) из оригинала 2020-03-01 . Проверено 2 марта 2020 .
  4. ^ Рафаэль, Говард А., изд. (Ноябрь 1974 г.). «Функции компьютера: регистр команд и декодер» (PDF) . Руководство пользователя MCS-40 для разработчиков логики . Санта-Клара, Калифорния, США: Intel Corporation . п. viii. Архивировано (PDF) из оригинала 2020-03-03 . Проверено 3 марта 2020 . […] Каждая операция, которую может выполнить процессор, идентифицируется уникальным двоичным числом, известным как код инструкции. […]
  5. ^ Джонс, Дуглас В. (июнь 1988 г.). «Минимальный CISC». Новости компьютерной архитектуры ACM SIGARCH . Нью-Йорк, США: Ассоциация вычислительной техники (ACM). 16 (3): 56–63. DOI : 10.1145 / 48675.48684 . S2CID 17280173 . 
  6. ^ Domagała, Лукаш (2012). «7.1.4. Тестовый набор» . Применение CLP к планированию команд по модулю для процессоров VLIW . Гливице, Польша: Компьютерная студия Яцека Скальмерски. С. 80–83 [83]. ISBN 978-83-62652-42-6. Архивировано 02 марта 2020 года . Проверено 28 мая 2016 .
  7. ^ Смотерман, Марк (2016) [2013]. «Проблема с множественными инструкциями» . Школа вычислительной техники Университета Клемсона. Архивировано 28 мая 2016 года . Проверено 28 мая 2016 .
  8. ^ Джонс, Дуглас В. (2016) [2012]. «Минимальный CISC» . Онлайн-коллекция компьютерной архитектуры . Айова-Сити, США: Университет Айовы , факультет компьютерных наук. Архивировано 02 марта 2020 года . Проверено 28 мая 2016 .
  9. ^ Шульман, Эндрю (2005-07-01). «Поиск двоичных клонов с помощью строк операций и функциональных дайджестов» . Журнал доктора Добба . Часть I. Том. 30 ч. 7. ООО «КМП Медиа» . С. 69–73. ISSN 1044-789X . № 374. Архивировано 02 марта 2020 года . Источник 2020-03-02 ; Шульман, Эндрю (2005-08-01). «Поиск двоичных клонов с помощью строк операций и функциональных дайджестов» . Журнал доктора Добба . Часть II. Vol. 30 ч. 8. ООО «КМП Медиа» . С. 56–61. ISSN 1044-789X . № 375. Архивировано 02 марта 2020 года . Проверено 28 мая 2016 г. ; Шульман, Эндрю (2005-09-01). «Поиск двоичных клонов с помощью строк операций и функциональных дайджестов» . ООО "КМП Медиа" . Часть III. Vol. 30 ч. 9. United Business Media . С. 64–70. ISSN 1044-789X . № 376. Архивировано 02 марта 2020 года . Проверено 28 мая 2016 . 
  10. ^ a b c d e f Хеннесси, Джон Л .; Паттерсон, Дэвид А .; Асанович, Крсте; Бакос, Джейсон Д .; Колвелл, Роберт П .; Бхаттачарджи, Абхишек; Conte, Thomas M .; Дуато, Хосе; Франклин, Диана; Гольдберг, Дэвид; Jouppi, Norman P .; Ли, Шэн; Муралиманохар, Навин; Петерсон, Грегори Д.; Пинкстон, Тимоти М .; Ранганатан, Партхасарати; Вуд, Дэвид А .; Янг, Клифф; Заки, Амр (2017-11-23). Компьютерная архитектура: количественный подход (6-е изд.). Кембридж, Массачусетс, США: Издательство Морган Кауфманн . ISBN 978-0-12811905-1. OCLC  983459758 .
  11. ^ Мэнсфилд, Ричард (1983). «Введение: почему машинный язык?» . Машинный язык для начинающих . Вычислить! Книги (1-е изд.). Гринсборо, Северная Каролина, США: ВЫЧИСЛИТЕ! Publications, Inc. , American Broadcasting Companies, Inc .; ISBN Small System Services, Inc.  0-942386-11-6. Архивировано 13 февраля 2008 года . Проверено 28 мая 2016 .
  12. ^ «Популярность языка программирования» . langpop.com . 2013-10-25. Архивировано из оригинала на 2015-04-11 . Проверено 10 октября 2015 .
  13. ^ Суонсон, Уильям (2001). «Введение в язык ассемблера» . Swanson Technologies . Архивировано 02 марта 2020 года . Проверено 10 октября 2015 .
  14. ^ "Определение байт-кода" . Журнал ПК . Энциклопедия журнала ПК. Архивировано из оригинала на 2012-10-06 . Проверено 10 октября 2015 .

Дальнейшее чтение [ править ]

  • Хайд, Рэндалл (2004). Написание отличного кода: низкоуровневое мышление, высокоуровневое написание . Понимание машины . 1 . Сан-Франциско, Калифорния, США: Пресс без крахмала . п. пассив. ISBN 1-59327003-8. Проверено 10 октября 2015 .