рефераты рефераты
Главная страница > Курсовая работа: Микроконтроллеры для начинающих. И не только  
Курсовая работа: Микроконтроллеры для начинающих. И не только
Главная страница
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
География экономическая география
Геодезия
Геология
Госслужба
Гражданский процесс
Гражданское право
Иностранные языки лингвистика
Искусство
Историческая личность
История
История государства и права
История отечественного государства и права
История политичиских учений
История техники
История экономических учений
Биографии
Биология и химия
Издательское дело и полиграфия
Исторические личности
Краткое содержание произведений
Новейшая история политология
Остальные рефераты
Промышленность производство
психология педагогика
Коммуникации связь цифровые приборы и радиоэлектроника
Краеведение и этнография
Кулинария и продукты питания
Культура и искусство
Литература
Маркетинг реклама и торговля
Математика
Медицина
Реклама
Физика
Финансы
Химия
Экономическая теория
Юриспруденция
Юридическая наука
Компьютерные науки
Финансовые науки
Управленческие науки
Информатика программирование
Экономика
Архитектура
Банковское дело
Биржевое дело
Бухгалтерский учет и аудит
Валютные отношения
География
Кредитование
Инвестиции
Информатика
Кибернетика
Косметология
Наука и техника
Маркетинг
Культура и искусство
Менеджмент
Металлургия
Налогообложение
Предпринимательство
Радиоэлектроника
Страхование
Строительство
Схемотехника
Таможенная система
Сочинения по литературе и русскому языку
Теория организация
Теплотехника
Туризм
Управление
Форма поиска
Авторизация




 
Статистика
рефераты
Последние новости

Курсовая работа: Микроконтроллеры для начинающих. И не только

Каковы же преимущества программирования на Си по сравнению с программированием на ассемблере? Вкратце они заключаются в следующем:

Ø  отпадает необходимость заботиться об операциях с числами большой разрядности. Компилятор автоматически сгенерирует правильный код для операции a + b, если a и b будут 8-, 16-, 32-битными числами, числами с плавающей запятой и даже числами разных типов;

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

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

Ø  исходный текст, написанный на Си, гораздо легче читается, он компактнее, легче модифицируется;

Ø  программы, написанные на Си, легче переносятся на MК других семейств.

Чтобы эффективно отлаживать программы, написанные на языке высокого уровня, разработчик должен иметь в своём распоряжении отладочные средства, предоставляющие адекватные возможности по отображению используемых в программе данных, а также по отслеживанию выполнения программы по её исходному тексту. Для обеспечения таких возможностей необходимы два условия:

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

Ø  отладчик должен уметь интерпретировать эту информацию.

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

Теперь рассмотрим, как отладчик должен интерпретировать символьную информацию, и какие возможности должны в связи с этим предоставляться пользователю.

Отслеживание выполнения программы по её исходному тексту

В общем случае, одна строка исходного текста преобразуется компилятором в несколько машинных команд. Даже ассемблерная программа почти всегда содержит макросы, разворачивающиеся при трансляции в несколько инструкций процессора. Отлаживать такую программу по дизассемблеру её кода неудобно, поэтому компиляторы вставляют в отладочную информацию таблицу номеров строк. Она содержит информацию о соответствии номеров строк исходного текста и имён файлов исходного текста абсолютным адресам кода программы. Отладчик отображает на экране исходный текст программы и, следуя этой таблице, может выполнять программу «по строкам», выполняя за один шаг все машинные команды, сгенерированные компилятором для текущей строки.

Таблица номеров строк также позволяет производить контекстные действия с текстом программы, например, выполнять её «до курсора», то есть до указанного пользователем места в исходном тексте, ставить точки останова на указанные строки и т.п. Контекстные действий удобны тем, что разработчику не нужно знать адреса, соответствующие строкам исходного текста: отладчик сам определит их по таблице. Отладчик должен «знать» адреса подпрограмм, функций и меток кода и уметь находить исходный текст функции по её имени.

Отображение данных, используемых в отлаживаемой программе

Для полноценной отладки разработчику необходимо иметь возможность в любой момент просмотреть данные, которыми манипулирует программа. Отладчик должен «уметь» отображать любые используемые программой данные в наиболее подходящем виде.

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

Данные в ассемблерных программах

В ассемблерных программах используются в основном простые данные, то есть ячейки памяти. Применяются также массивы. Для правильного отображения простых данных отладчику нужно «знать»:

Ø  имя объекта;

Ø  адрес объекта в памяти;

Ø  адресное пространство МК, в котором располагается объект. Многие МК имеют более одной области данных. Например, в МК семейства MCS-51 есть внутренняя память данных, внешняя память данных и битовое пространство;

Ø  разрядность объекта, то есть занимаемое им число байт. 16-битные МК, такие как представители семейства MCS-96. «умеют» оперировать 8-, 16-, 32-битными данными. Здесь необходимо отметить один существенный момент. Для разработчика важно, какой логический размер имеет объект. Например, восьмиразрядные МК семейства PIC (Microchip) оперируют только байтами. Если же необходимо иметь в программе, например, 16-битный счётчик, то манипулировать каждым байтом приходится в отдельности. Но программисту при отладке хотелось бы видеть не каждый байт счётчика в отдельности, а оба байта сразу, в виде 16-битной переменной. Популярные кросс-ассемблеры такой возможности не предоставляют. Исключение – кросс-ассемблер PASM-PIC фирмы «Фитон», который позволяет объявлять в программе данные размером байт, слово, двойное слово, а также массивы таких объектов. При отладке программ, написанных с помощью PASM-PIC, все объекты отображаются в виде, соответствующем их логическому размеру и структуре;

Ø  область видимости объекта. Если программа состоит из нескольких модулей, у программиста есть возможность локализовать область видимости имени в пределах одного модуля. Таким образом, в разных модулях могут существовать объекты с одинаковыми именами, но разными остальными атрибутами. Отладчик должен «разбираться», когда какой объект активен, и правильно отображать его. Заметим, однако, что практика использования одинаковых имён в разных модулях часто приводит к путанице и ошибкам. В случае если объект объявлен глобальным (PUBLIC) и виден во всех модулях, трудностей с интерпретацией не возникает.

Обладая вышеизложенной информацией, отладчик должен, получив от пользователя имя объекта, отобразить его значение в соответствии с типом. Наиболее «продвинутые» отладчики дополнительно могут отображать остальные атрибуты объекта.

Данные в программах на языках высокого уровня

Отображать объекты, применяемые в языках высокого уровня, значительно сложнее ввиду разнообразия структуры объектов, способов их размещения в памяти и областей видимости. Для примеров будем использовать язык Си, как наиболее популярный у разработчиков.

5. Структура объектов

Помимо простых переменных разной разрядности, в программах на Си используются также переменные с плавающей запятой, структуры (struct), объединения или союзы (union), указатели, одномерные и многомерные массивы. Последние могут состоять как из простых объектов, так и из сложных (структур, союзов, указателей).

Использование сложных объектов в программах, безусловно, удобно. Однако ввиду сложности их структуры крайне желательно иметь возможность её адекватного отображения на этапе отладки. В отладчиках фирмы «Фитон» сложные объекты могут отображаться как в сжатом (список значений элементов), так и в развёрнутом виде с указанием адреса, значения и типа каждого элемента массива и / или члена структуры. Реализация указателей в разных компиляторах различна. То, что МК обычно имеет несколько адресных пространств, создает дополнительные трудности, так как при работе с указателем должно быть известно, помимо адреса, и адресное пространство, куда указывает указатель. В некоторых реализациях идентификатор адресного пространства является составной частью значения указателя, в других компилятор заранее «знает» это и генерирует соответствующий код.

Кроме этого, компонент адреса в указателе может быть размером от 8 до 32 бит. При отображении значений указателей отладчик должен «знать» все детали их реализации в каждом компиляторе.

Способы размещения объектов в памяти

Страницы: 1, 2, 3, 4, 5, 6, 7, 8

рефераты
Новости