Как компьютер различает, является ли двоичный шаблон инструкцией или просто числом?
Я читаю книгу "Организация компьютеров и встраиваемые системы" Хамахера, и у меня возникает вопрос: "Как компьютер различает, является ли двоичный шаблон инструкцией или просто числом?"
Может ли кто-нибудь помочь мне понять эту концепцию?
2 ответа
Процессор фон Неймана (практически любой процессор) не может различить код и данные в памяти. То, на что указывает указатель инструкций CPU, будет загружено в декодер инструкций в виде инструкции. Если это недопустимая инструкция, это вызовет исключение в CPU.
Это позволяет программе создавать новый исполняемый код в памяти или даже изменять свой собственный код. С другой стороны, это позволяет проводить много атак с использованием кода.
То, как компьютер различает инструкции и цифры, просто зависит от того, что читает данные и где. Например, простой арифметико-логический блок (АЛУ) будет включать вход для выполняемой операции и два входа для операндов. Данные, поступающие в порты операндов, читаются как числа, тогда как данные, поступающие на вход оператора, читаются как инструкция.
Все зависит от того, какой блок компьютерной архитектуры читает данные, и от того, какой вход этот блок читает.