Ответить
Ответить
Комментировать
4
Подписаться
1
1 ответ
Поделиться
АВТОР ВОПРОСА ОДОБРИЛ ЭТОТ ОТВЕТ

Определённый диссонанс в этот вопрос вносит предлог «в». Ок, тем лучше, попытка разрешить этот диссонанс сделает ответ интереснее. Дело в том, что и данные и инструкции лежат в памяти (в оперативной и внешней), а в микропроцессор они попадают лишь на мгновение. Когда они в микропроцессоре, тут то их различия проявляются в полной мере.

Итак, и данные и инструкции — это байты (от 0 до 255 каждый). (Можно было бы делить данные и другими порциями, но так уж сложилось, что это байты. Если интересно, то спросите об этом). Пока они лежат на внешнем носителе (диске, карте памяти и т.п.) — это просто закодированные нулями и единицами числа. Последовательности одних мы называем исполняемыми файлами, а остальные — документами, фотографиями, звуко- и видеозаписями и т.д.

И данные и исполняемый код (который и состоит из инструкций) прежде помещаются в оперативную память и становятся доступны микропроцессору. Память состоит из ячеек, а у каждой ячейки есть порядковый номер, или, иначе, адрес.

У микропроцессора есть специальные ячейки — регистры. Одна из них — указывает адрес очередной инструкции (указатель команд). Микропроцессор считывает инструкцию, классифицирует её и выполняет. А затем увеличивает значение указателя команд длину инструкции. Всё. Один цикл завершён, можно всё повторить заново, но это будет уже другая инструкция.

Во время выполнения инструкций чаще всего приходится оперировать данными. Бывают инструкции, которые не имеют отношения к данным, но их меньшинство. В одних регистрах процессор держит адреса данных, в других сами данные. Затем складывает, вычитает, умножает, сдвигает, перекладывает из одних ячеек в другие, передаёт в порты, соединённые с периферийными устройствами, получает их из портов и т.д. Из этого складывается всё, что вы видите в компьютерном мире. И всё это делается под управлением инструкций.

Другими словами, инструкции — это данные, которые управляют работой микропроцессора. Потому они так и называются. Процессор их читает и выполняет.

PS (по обсуждению в комментариях):
На различных блоксхемах изображающих архитектуру микропроцессоров часто рисуют блок управления инструкциями и блок обработки данных. И там и там есть регистры куда помещается инструкция. Она там классифицируется и выполняется. Условно говоря, определённые её биты за несколько тактов работы включают и выключают что-то в остальных блоках. В определённые такты в ходе работы происходит обработка данных. Какая — определяет инструкция. Над какими данными (какими ячейками памяти и какими регистрами) тоже определяет инструкция.

Что и в какой последовательности сделать для выполнения определённой инструкции в современных процессорах определяет микропрограмма.

12
0

Спасибо за столь развернутый ответ.
Остается три момента.
1) Как связаны данные и инструкции?
Как я понял, инструкции управляют данными. Так?
2) Как компьютер определяет адреса и что такое адреса.
3) Что такое исполняемый файл?

0
Ответить

3) если вы используете, например, Windows, то зайдите в Проводни и выполните поиск фйлов по маске «*.exe». Это программы. Или исполняемые файлы. В них и лежат в основном инструкции и немного данных (иконки приложений, строки текста, которые вы видите в окнах и т.п.).
2) в самих же инструкциях указываются адреса, по которым надо класть данные и потом брать для обработки
1) программа (или набор инструкций) является воплощением некоторого алгоритма, обработки данных. Например, программа Paint — позволяет вам изменять рисунок, т.е. данные. Иногда данные и инструкции связаны более тесно. Например, для антивирусной программы инструкции других программ — это данные, которые надо читать и анализировать. В вирусах это проникновение еще сильнее.

+1
Ответить

Спасибо!

0
Ответить
Ещё 3 комментария

что такое адреса

Когда у вас много данных в оперативной памяти, вам нужен какой-то способ указывать, какие конкретно данные вы хотите использовать в данный момент.

Адреса памяти концептуально похожи на номера квартир в многоэтажном доме. Когда вы указываете номер квартиры - вы таким образом точно указываете, куда вы хотите отдать (или откуда получить) данные. Аналогично, оперативная память разделена на маленькие блоки (каждый из них - аналог квартиры), в каждом из которых можно хранить ровно одно число. Когда вы хотите прочесть или записать данные, вам нужно указывать адрес этих данных, иначе было бы непонятно, откуда/куда конкретно вы хотите читать/писать.

0
Ответить

Александр, не совсем ясно, каким образом процессор распределяет и считывает адреса.
Есть ли место, где они записываются?

0
Ответить

Адреса распределяет не процессор, а сама программа. В современных компьютерах (поскольку на них одновременно выполняется несколько программ) адреса распределяет операционная система (являющаяся по сути Самой Главной Программой, которая координирует работу остальных программ). То есть, в какой-то момент программа выполняет последовательность инструкций, суть которых сводится к: "операционная система, найди для меня 8 (или сколько нужно для программы) свободных адресов подряд". Когда эти инструкции исполнены, в распоряжении процессора оказывается число, являющееся адресом первого (из восьми) свободного адреса. Теперь программа может записать какую-то информацию в этот адрес и семь адресов, следующих за ним.

Есть ли место, где они записываются?

Да. В готовых программах часть байт отведена для того, чтобы хранить адреса нужных данных. Замкнутого круга не возникает, потому что программе не нужно запоминать адреса, в которых хранятся адреса, потому что относительно адреса начала программы эти адреса (в которых хранятся адреса) - фиксированные. Поэтому запоминать их не надо, их можно прямиком в виде чисел вписывать в программу.

+1
Ответить
Прокомментировать
Ответить
Читайте также на Яндекс.Кью
Читайте также на Яндекс.Кью