Машинные команды

Итак, из предыдущей статьи мы сделали вывод, что компьютерный мозг — значительно примитивнее, чем мозг любого человека, способного принимать самостоятельные решения исходя из обстоятельств и даже вопреки обстоятельствам. Компьютер может принимать решения лишь в рамках отведенных программой команд, и в этой статье мы попробуем разобраться, какие команды следует подавать компьютеру, чтобы наладить с его «мозгом» устойчивый диалог.

Машинные команды, исполняемые центральным процессором – это повелительные утверждения вида:

  • «Прибавить к содержимому ячейки 2020 содержимое ячейки 2024»,
  • «Перенести содержимое ячейки 4000 в ячейку 4800», «Сравнить на равенство содержимое ячеек 1600 и 1604» и т. п.

Они состоят из двух частей: кода операции «прибавить», «перенести», «сравнить» и адрес
а операндов. В некоторых случаях команды содержать еще дополнительные информационные биты.

Обычно процессоры могут выполнять около сотни команд, поэтому для записи кода операции достаточно выделить один байт. Чаще всего так и делается, хотя иногда код операции занимает больше или меньше места в памяти. Адреса операндов занимают от одного до десяти байтов. Для каждого типа процессоров определяется самая распространенная длина команды. Она называется машинным словом или просто словом (word). У большинства популярных современных процессоров машинное слово составляет 4 байта, 32 двоичных разряда, но сейчас идет активный переход к 64-разрядным процессорам, у которых машинное слово равно 8 байтам.машинные команды

Величина машинного слова определяет все остальные характеристики процессора. Он обрабатывает информацию порциями величиной в одно машинное слово, поэтому шины, которые связывают оперативную память с процессором, имеют число проводников, совпадающее с машинным словом. Как уже упоминалось ранее, внутри процессора есть небольшое количество ячеек очень быстрой памяти, называемой регистрами. Обычно их число колеблется от 16 до 64 ячеек. Регистры используются процессором для хранения промежуточных значений. Длина большинства регистров тоже совпадает с машинным словом.

Машинные команды хранятся в оперативной памяти, так же, как и те данные, которые они обрабатывают. Процессор по очереди извлекает команды из оперативной памяти, переносит их в свои регистры, там по коду операции узнает, что ему надо делать, и выполняет команду. В процессе выполнения команды процессор извлекает из оперативной памяти нужные операнды, а после выполнения заносит в оперативную память результаты команды.

Какие же команды можно давать процессору? Хотя их довольно много, они составляют всего несколько групп:

  • команды пересылки информации из оперативной памяти в регистры процессора и обратно;
  • арифметические команды сложения, вычитания, умножения и деления;
  • команды сравнения по величине двоичных чисел;
  • логические команды конъюнкции, дизъюнкции, отрицания, инверсии;
  • команды сдвига двоичных разрядов;
  • прочие команды, в числе которых команды передачи управления и несколько команд ввода-вывода.

Как видите, машинные команды очень примитивны, они выполняют мелкие действия над отдельными ячейками. Представьте себе, сколько нужно команд типа «загрузить содержимое ячейки с адресом 2048 в регистр 05» или «сдвинуть на два разряда влево содержимое регистра 12», чтобы запрограммировать задачу «найти в телефонном  справочнике номер абонента с такой-то фамилией, переехавшего в этот район в ноябре или декабре прошлого года». Представили? Тогда вы можете оценить гигантский труд программистов, проделанный ими всего за каких-нибудь полвека.

Языки программирования



Rambler's Top100