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