Микропроцессорная техника: практический курс : учебное пособие для студентов Физико-технологического института, обучающихся по направлениям подготовки "Ядерная физика и технологии", "Биомедицинская инженерия"
Download 0.63 Mb. Pdf ko'rish
|
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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling