Скачать презентацию Генерация кода Генерация кода Стадия генерации кода Скачать презентацию Генерация кода Генерация кода Стадия генерации кода

SPO-9 Генерация кода.pptx

  • Количество слайдов: 12

Генерация кода Генерация кода

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

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

Генерация кода Способы представления результирующего кода – абсолютный машинный код; – перемещаемый машинный код; Генерация кода Способы представления результирующего кода – абсолютный машинный код; – перемещаемый машинный код; – другой язык программирования, в т. ч. язык ассемблера. 4

Генерация кода При генерации программы на абсолютном машинном коде предполагается, что такой код помещается Генерация кода При генерации программы на абсолютном машинном коде предполагается, что такой код помещается в фиксированное место в памяти, т. е. адреса всех элементов программы (команды, переменные, константы) определяются однозначно. 5

Генерация кода Достоинства метода: – программа готова к исполнению сразу после загрузки в память; Генерация кода Достоинства метода: – программа готова к исполнению сразу после загрузки в память; – высокая скорость генерации кода. Недостатки метода: – невозможность раздельной трансляции отдельных модулей программы 6

Генерация кода При генерации программы на перемещаемом машинном коде результатом является т. н. объектный Генерация кода При генерации программы на перемещаемом машинном коде результатом является т. н. объектный модуль, в котором расположение объектов программы (команд, переменных, констант) в памяти не фиксируется. Транслятор сопровождает объектный модуль информацией о перемещаемых объектах – таблицей перекрестных ссылок. На основании этой таблицы загрузчик выполняет предварительную настройку программы перед её запуском. 7

Генерация кода Достоинства метода: – возможность раздельной трансляции отдельных модулей программы. Недостатки метода: – Генерация кода Достоинства метода: – возможность раздельной трансляции отдельных модулей программы. Недостатки метода: – увеличивается время трансляции; – временная задержка при запуске программы. 8

Генерация кода Несколько перемещаемых объектных модулей могут быть связаны в единое целое с помощью Генерация кода Несколько перемещаемых объектных модулей могут быть связаны в единое целое с помощью специальной программы – компоновщика. Частым использованием перемещаемых объектных модулей являются библиотеки подпрограмм, в т. ч. динамически подключаемые библиотеки. 9

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

Генерация кода Транслятор языка 1 Транслятор языка 2 Транслятор языка 0. . . Транслятор Генерация кода Транслятор языка 1 Транслятор языка 2 Транслятор языка 0. . . Транслятор языка N 11

Генерация кода Достоинства метода: – значительное упрощение генерации кода; – возможность использовать символические имена; Генерация кода Достоинства метода: – значительное упрощение генерации кода; – возможность использовать символические имена; – возможность использовать макросредства; и т. д. Недостатки метода: – увеличение времени трансляции 12