Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Внутреннее представление Си-программы






Система представлений о внутренней среде исполнения Си-программы (имеется в виду «классический» Си, а не Си++) максимально приближена к «реальностям», с которыми сталкивается программа, работающая непосредственно на уровне архитектуры, и не имеющая под собой «прослойки» программного обеспечения. К этому языку применим термин «машинно-независимый ассемблер», а основные понятий его семантики прямо проецируются на соответствующие элементы архитектуры, в том числе:

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

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

· работы с памятью на низком уровне. Тип указателя однозначно интерпретируется как адрес в непрерывном адресном пространстве. На низком уровне указатели различных типов приводятся друг к другу и к целому типу, передача указателя от одной программной компоненты к другой обеспечивает доступ к данным из любой точки программы;

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

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

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

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






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.