Ббк 32. 973-018 г рецензент канд физ мат наук, Ф. А. Мурзин


Download 278.16 Kb.
bet32/68
Sana12.10.2023
Hajmi278.16 Kb.
#1700499
TuriКурс лекций
1   ...   28   29   30   31   32   33   34   35   ...   68
Bog'liq
FIT-Gor-PP3

4.1. Особенности представления программ на C

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


Язык C предполагает, что программа собирается из набора файлов, содержащих фрагменты программы и библиотеки функций, подготовленные, возможно, независимо. При этом компилируемая программа представляет собой одноуровневую конструкцию из равноправных определений структур данных и функций. Это означает, что любая функция имеет доступ к любому элементу любой структуры данных и может изменять его значение. Учитывая, что результат программы формируется как последовательность шагов изменения данных,
размещѐнных по конкретным адресам, программист вынужден детально и тщательно изучать все тонкости побочных эффектов как своего, так и смежных фрагментов программы. Это оказалось серьѐзным препятствием к повышению производительности труда.
–При конструировании кода программы C-компилятор распределяет память для глобальных и локальных данных в статической памяти или в стеке, соответственно.

    • Встраиваются вызовы библиотечных функций создания-удаления для динамических структур данных и обмена данными, включая ввод-вывод.

    • Данные бывают константами или переменными, идентифицируемыми с помощью идентификаторов.

    • Типы данных разделены на основные и производные, созданные с помощью специальных операций, включая создание неоднородных структур данных.

    • Над типами данных определѐн конкретный набор операций, с помощью которых строятся вычислимые выражения, и схем операторов управления и описания, используемых при конструировании функций.

    • Многократно используемые функции объединяются в специализированные библиотеки, часть которых включена в системы программирования на языке C.

    • Компилятору для эффективности кодирования нужна информация о типах данных переменных и результатов функций, но допустимо умолчание в случае типа int.

    • Возможна спецификация вида используемой памяти, но она носит рекомендательный характер – компилятор учитывает еѐ в меру возможности.

    • Определения функций обладают некоторой свободой в конкретизации списка параметров на уровне вызова функции, что позволяет программировать функции произвольного числа параметров.

    • Реализация арифметических операций обладает вариантами, зависящими от основного типа обрабатываемых скаляров в соответствии с разнообразием аппаратной поддержке этих операций.

Абстрактная машина (АМ) языка C может рассматриваться как развитие и обобщение АМ для ассемблера, обеспечивающее возможность использовать более сложные структуры данных в качестве регистров.


Определение мало отличается от АМ подмножества языка Pascal (см. Лекция 2):
s e c m → s‟ e‟ c‟ m‟
Сумматор расширяется до стека промежуточных значений, и появляется дополнительный регистр «Локалы» для локализации хранимых объектов:
<Стек_ значений, Локалы, Текущая_Команда, Память >
Регистр «Локалы» может быть устроен подобно регистру «E» из SECD- машины Лендина, только хранит он не любые значения, а скаляры или ссылки на значения в «Памяти». Начальное состояние памяти – вектор глобальных переменных, адресуемых подпрограмм и меток. «Локалы» и
«Память» образуют контекст исполнения программы.
АМ различает следующие категории команд:

  • засылка значений из памяти в стек;

  • вычисления над безымянными операндами в стеке при обработке выражений;

  • пересылка значений из стека непосредственно в память или в регистр Локалы;

  • организация переходов по метке в программе;

  • организация ветвлений и циклов;

  • организация вызовов функций с сохранением/восстановлением локального контекста.





Download 278.16 Kb.

Do'stlaringiz bilan baham:
1   ...   28   29   30   31   32   33   34   35   ...   68




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling