Особенности представления программ на Си — КиберПедия 

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

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

2021-01-31 62
Особенности представления программ на Си 0.00 из 5.00 0 оценок
Заказать работу

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

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


 

 

своего, так и смежных фрагментов программы. Это оказалось серьезным пре- пятствием к повышению производительности труда.

– При конструировании кода программы C-компилятор распределяет па- мять для глобальных и локальных данных в статической памяти или в стеке, соответственно.

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

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

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

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

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

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

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

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

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

Абстрактная машина (АМ) языка Си может рассматриваться как развитие и обобщение АМ для ассемблера, обеспечивающее возможность использо- вать более сложные структуры данных в качестве регистров. Определение мало отличается от АМ пи-кода языка Pascal (см. Лекция 2):

s e c m → s' e' c' m'

 
Сумматор расширяется до Стека промежуточных значений S, и появля- ется дополнительный регистр E – «Локалы» для локализации хранимых объ- ектов:

<Стек_ значений, Локалы, Текущая_Команда, Память >


 

 

 
Регистр «Локалы» может быть устроен подобно регистру «E» из SECD- машины Лендина, только хранит он не любые значения, а скаляры или ука- затели на значения в «Памяти». Начальное состояние памяти – вектор гло- бальных переменных, адресуемых подпрограмм и меток. «Локалы» и «Па- мять» образуют контекст исполнения программы.

АМ различает следующие категории команд:

– засылка значений из Памяти в Стек;

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

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

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

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

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

 

Определение Примечание
Main (argc, argv, envp) Заголовок функции.
  Int argc; Char **argv; Char **envp; { For (i=0; i < argc; i++) Printf (”arg%i:%s\n”, i, argv [i]); For (p=envp; *p!= (char*)0; p++) Printf (”%s\n”, *p); } Описания параметров функции: – число аргументов, – вектор аргументов, – вектор системных переменных.   Цикл вывода аргументов командной строки при вызове программы

Пример 14. Программа распечатки параметров командной строки и переменных среды на языке Си15

 


Поделиться с друзьями:

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.009 с.