Микропроцессорная техника: практический курс : учебное пособие для студентов Физико-технологического института, обучающихся по направлениям подготовки "Ядерная физика и технологии", "Биомедицинская инженерия"


Download 0.63 Mb.
Pdf ko'rish
bet59/74
Sana29.03.2023
Hajmi0.63 Mb.
#1306393
1   ...   55   56   57   58   59   60   61   62   ...   74
Bog'liq
978-5-321-02171-21 2012 (1)

Описание стартового механизма. Стандартные библиотеки Keil
µ
Vision содержат библиотечные функции в объектном формате, подго-
товленные для компоновки в перемещаемые модули. Это означает, что
в библиотечных функциях в большинстве случаев изначально отсут-
ствует привязка к каким-либо абсолютным адресам: они могут быть
размещены компоновщиком (Linkerредактор связей) в любом подхо-
дящем месте резидентной или внешней памяти программ. Управление
размещением модулей может быть осуществлено различными путя-
ми как через директивы ассемблера (макроассемблера), так и через
настройки компоновщика.
Директивы SEGMENT и RSEG на рис. 4.1–4.3 как раз необходимы для
оформления перемещаемого модуля программы пользователя. Вызы-
ваемые библиотечные функции библиотек оформлены с помощью та-
ких же директив и точно так же компонуются в отдельные перемеща-
Таблица 4.4. Библиотечные функции преобразования форматов чисел
Преобразование
Библиотечная
функция
Операнд Результат
(char)
→ (float)
?C?FCASTC
R4
R4–R7
(int)
→ (float)
?C?FCASTI
R4_R5
R4–R7
(long)
→ (float)
?C?FCASTL
R4–R7
R4–R7
(float)
→ (char)
?C?CASTF
R4–R7
R7
(float)
→ (int)
?C?CASTF
R4–R7
R6_R7
(float)
→ (long)
?C?CASTF
R4–R7
R4–R7
Примечание. Старший байт всегда записан слева.
105


4. Стандартные библиотеки Keil µVision
емые модули, которые компоновщик размещает в памяти программ.
Компоновщик стремится размещать перемещаемые модули в памяти
программ подряд по самым младшим свободным адресам. В этой свя-
зи в перемещаемом модуле программы пользователя не рекомендуется
использовать какие-либо директивы, осуществляющие привязку к аб-
солютным адресам, например, директиву ORG. В противном случае
модуль программы пользователя будет «оторван» от остальной части
программы. Например, указание org 2000h в программе пользова-
теля приведет к размещению этого модуля в указанной области памяти
программ, тогда как библиотечные функции могут оказаться разме-
щенными, начиная с адреса 0000H. Справедливости ради отметим,
что даже в таких случаях компоновщик пытается все же выправить
ситуацию и разместить модули программы максимально компактно.
Однако результат при этом может быть негарантированным.
Одна из причин этого – «привязка» стартовой функции ?C_STARTUP
к абсолютному адресу. Такая привязка необходима для фиксации
стартового адреса: любая программа запускается с адреса 0000H через
стартовую функцию ?C_STARTUP. С точки зрения внутренней орга-
низации стартовая функция состоит из двух частей: абсолютного и
перемещаемого модулей.
Абсолютный модуль оформлен директивой CSEG AT 0H и всегда
размещается с нулевого адреса памяти программ. Обычно он состоит
из единственной команды LJMP STURTUP1, занимающей три байта
памяти.
Все остальные команды стартовой функции находятся в переме-
щаемом модуле, который доступен из абсолютного модуля по симво-
лическому адресу STURTUP1 и размещается компоновщиком в любом
подходящем месте памяти программ.

Download 0.63 Mb.

Do'stlaringiz bilan baham:
1   ...   55   56   57   58   59   60   61   62   ...   74




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