PDF Google Drive Downloader v1.1


Báo lỗi sự cố

Nội dung text 8 - Генерация объектной программы.pdf

Генерация объектной программы 1 Алгоритм генерации машинных команд Для генерации машинных команд по обратной польской записи используется стек операндов – SO с указателем i (начальное значение – i=1). Также используются рабочие переменные – (начальное значение – j=1). Алгоритм генерации команд: 1 Взять очередной символ S из обратной польской записи. Если строка обратной польской записи закончилась, то завершить работу. 2 Если S – операнд, то занести s в стек операндов: i++ и перейти к п.1. 3 Иначе, S – знак операции с m операндами, которая может порождать результат или нет. Среди m верхних элементов стека: SOi-m...SOi-1 определить рабочую переменную с минимальным номером n, которую можно использовать для размещения результата. Если среди этих элементов стека нет рабочих переменных, принимается n=j. 4 Генерируются машинные команды для реализации операции S. При этом, если операция порождает результат, то в этих командах результат должен заноситься в rn. 5 Вычеркнуть из стека операнды: i=i-m, скорректировать j: j=n. Если операция породила результат, то занести в стек rn: SOi=rn, i=i+1 и скорректировать j: j=j+1. 6 Перейти к пункту 1. 1.1 Генерация команд перехода в объектной программе Одной из проблем при генерации машинных команд является формирование адресов меток в командах перехода. При генерации машинных команд по операциям УПЛ и БП необходимо в машинный код соответствующей команды перехода вставить адрес метки. Однако, это сделать невозможно, т. к. расположение этих меток в программе еще неизвестно. Поэтому генерация команд переходов выполняется в два этапа. В ходе генерации команд формируются две таблицы: таблица адресов меток: │ метка │ адрес в программе │ и таблица адресов недостроенных команд перехода: │ адрес команды │ метка │. В первую таблицу элементы заносятся по операции «:» (заносится адрес очередной генерируемой команды). При генерации команды перехода просматривается таблица адресов меток. Если метка уже определена, ее адрес вставляется в команду. Иначе, генерируется команда перехода с нулевым адресом, адрес этой команды и нужная метка заносятся во вторую таблицу. По концу генерации команд вторая таблица просматривается, адреса меток извлекаются из первой таблицы и заносятся в команды. Например, пусть генерация объектной программы выполняется для компьютера, имеющего следующий состав машинных команд:

Tài liệu liên quan

x
Báo cáo lỗi download
Nội dung báo cáo



Chất lượng file Download bị lỗi:
Họ tên:
Email:
Bình luận
Trong quá trình tải gặp lỗi, sự cố,.. hoặc có thắc mắc gì vui lòng để lại bình luận dưới đây. Xin cảm ơn.