Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Процесс исполнения программного кода



Процесс исполнения программного кода в общих чертах представлен на Рис.1.8. Действующими лицами этого процесса являются:

· программный код – последовательность команд, размещенная в сегменте кода (CS), на начало которого ссылается одноименный регистр процессора;

· каждая команда имеет в сегменте свой относительный адрес (от начала сегмента), регистр процессора IP(I nstruction P ointer ) содержит адрес очередной выполняемой команды. В программировании на языках высокого уровня с IP ассоциируется очень важное понятие – текущая точка выполнения программы;

· команда представляет собой машинное слово, обычно переменной длины, и состоит из нескольких полей. Обязательным полем является код операции, который указывает на выполняемое командой действие. Совокупность команд процессора называется системой команд. В системе команд обязательно присутствуют следующие виды операций:

o команды перемещения и обработки данных выполняют перенос данных между ячейками памяти и регистрами данных процессора, а также все действия по их обработке (mov, add, sub);

o команды проверки состояний (условий) проверяют результат выполнения операций, состояния регистров процессора, устройств ввода-вывода и т.п. (test);

o команды условного и безусловного переходов определяют адрес следующей команды (выполняют переход в программе) в зависимости от результата проверки некоторого условия. Если условие выполняется, то происходит переход, иначе выполняется следующая за ней команда.

· вторым элементом команды являются операнды: в команде в явном или неявном виде должны содержаться адреса операндов; это могут быть регистры процессора, содержащие данные, и ячейки памяти;

· переменные, используемые в программы, при трансляции «становятся» областями памяти в различных сегментах данных (сегменты данных, стека, динамической памяти), где получают свои адреса. В командах, работающих с памятью, в том или ином виде имеется информация, позволяющая вычислить (или просто взять) этот адрес;

· в нашем примере большинство команд переноса и обработки данных являются двухадресными – результат операции совпадает с первым операндом (команду сложения add ax, 454 следует понимать как ax=ax+b);

· в нашем примере используется непосредственная адресация для констант (их значение находится в самой программе, add ax, #10) и прямая адресация для ячеек памяти (в команде содержится их адрес, add ax, 454);

· в командах безусловного (jmp) и условного (jmi – «переход, если меньше нуля») должен быть определен адрес следующей команды: в нашем примере он задан в относительной форме – в виде смещения (расстояния) от следующей команды до той, куда производится переход.

Рис. 1.8. Кодовое представление программы

Выполнение программы происходит, в общих чертах, таким образом:

· процессор, используя регистры CS:IP выбирает из памяти очередную команду и дешифрует ее. После этого IP увеличивается и ссылается на следующую команду (в зависимости от длины текущей, например, IP=IP+3);

· если это команда переноса или перемещения данных, то процессор формирует адреса операндов в зависимости от способа адресации, после чего выполняет действия, указанные в команде;

· если это команда проверки условия, то проверяется указанный операнд, и устанавливаются признаки выполнения различных условий (равно 0, не равно 0, больше 0 и т.п.);

· если в команде условного перехода проверяемое условие выполняется, то программа «переходит» по адресу, содержащемуся в команде. В нашем примере это смещение из команды просто добавляется к IP (IP=IP+<смещение>). Иначе ничего не происходит и выбирается следующая команда.

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





Дата публикования: 2014-11-29; Прочитано: 355 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...