реклама на сайте
подробности

 
 
> Startup file для LPC2300/LPC2400
серый волк
сообщение Sep 4 2007, 14:54
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 32
Регистрация: 29-08-07
Пользователь №: 30 125



Скажите пож-та,

существует ли какое-нибудь описание этого файла с более подробными объяснениями
чем комментарии , имеющимися в самом файле.

Спасибо
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
серый волк
сообщение Sep 6 2007, 08:08
Сообщение #2


Участник
*

Группа: Новичок
Сообщений: 32
Регистрация: 29-08-07
Пользователь №: 30 125



Цитата(Сергей Борщ @ Sep 6 2007, 08:47) *
А __heap_base, __heap_limit очень похожи на простые метки, которые скорее всего можно использовать в других файлах для получения адреса начала и конца кучи. То же и StackTop



да но где они инициализируются адресом?
И смысл их написания в примере ?

спасибо
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 6 2007, 13:26
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(серый волк @ Sep 6 2007, 11:08) *
да но где они инициализируются адресом?
Попробую объяснить как я бы это интуитивно понял (документацию на эту версию еще не читал, если ошибусь - пусть кто-нибудь поправит):

Как ассемблируется программа. Когда ассемблер встречает директиву начала сегмента, он устанавливает счетчик адреса в ноль и с этого места начинает размещать команды (загляните в любой листинг), присваивая им относительные адреса относительно начала этого кусочка сегмента:
Код
   RSEG CODE
Start
0000     MOV a, b
0001     MOV c, b
Label1
0002     JMP  label
0003     DB "Tipa stroka v oblasti koda"
001E     ....... и т.д.
В конкретном случае он адрес нарасчивает не на 1, а на размер команды, но это уже детали. В процессе линковки все участки сегмента с таким имененм собираются вместе и линкер, размещая их согласно заданной ему карте размещения сегментов присваивает этим относительным адресам физические. Допустим, метка Start попала на абсолютный адрес 100. Вас ведь не удивит, что метка Label1 будет иметь абсолютный адрес 103?

Точно также можно размещать данные в памяти данных. И точно также там можно определять метки, которым при линковке будут присвоены абсолютные адреса. Поэтому я предполагаю, что ваш код можно читать так:
Код
AREA STACK, NOINIT, READWRITE, ALIGN=3; // Отсюда начинается часть сегмента STACK, неинициализированная (т.е. не генерить код для этой области в прошивке?), возможны обращения на чтение и запись, при линковке начало этой части сегмента его начало выровнять на 2^3 = 8 байт

Stack_Mem SPACE USR_Stack_Size;Метка Stack_Mem будет иметь адрес этого места после линковки, зарезервировать USR_Stack_Size байт
__initial_sp SPACE ISR_Stack_Size; Метка __initial_sp будет иметь адрес этого места после линковки, зарезервировать ISR_Stack_Size байт

Stack_Top; А метка Stack_Top будет иметь адрес этого места, т.е. конца зарезервированной под стеки области.
Цитата
И смысл их написания в примере ?
Ну, во-первых показать как писать ассемблерные исходники. Во-ворых, наверное в начале программы в указатель стека заносится адрес __initial_sp, остальные метки тоже для чего-нибудь нужны, хотя бы чтобы отметить эти места в дизассемблерном листниге отладчика.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- серый волк   Startup file для LPC2300/LPC2400   Sep 4 2007, 14:54
- - alexander55   Цитата(серый волк @ Sep 4 2007, 18:54) Ск...   Sep 5 2007, 05:42
- - серый волк   спасибо только тогда посоветуйте где взять инфо...   Sep 5 2007, 08:26
|- - zltigo   Цитата(серый волк @ Sep 5 2007, 11:26) ко...   Sep 5 2007, 08:39
- - серый волк   извините конечно, но может кто посоветовать конкр...   Sep 5 2007, 09:05
- - серый волк   Тема со Startup на ARMe для меня новая, прошу изви...   Sep 5 2007, 15:06
- - bodja74   Все это или диррективы компиллятору или константы ...   Sep 5 2007, 16:24
|- - zltigo   Цитата(bodja74 @ Sep 5 2007, 19:24) Все э...   Sep 5 2007, 18:11
|- - bodja74   Цитата(zltigo @ Sep 5 2007, 21:11) Компил...   Sep 5 2007, 19:02
|- - Сергей Борщ   Цитата(bodja74 @ Sep 5 2007, 22:02) Здрас...   Sep 6 2007, 04:47
|- - alexander55   Цитата(Сергей Борщ @ Sep 6 2007, 08:47) В...   Sep 6 2007, 05:10
|- - bodja74   Цитата(Сергей Борщ @ Sep 6 2007, 07:47) В...   Sep 6 2007, 07:30
|- - zltigo   Цитата(bodja74 @ Sep 6 2007, 10:30) Тепер...   Sep 6 2007, 08:19
|- - Сергей Борщ   Цитата(bodja74 @ Sep 6 2007, 10:30) Я неп...   Sep 6 2007, 13:53
|- - alexander55   Цитата(серый волк @ Sep 6 2007, 12:08) да...   Sep 6 2007, 13:06
- - серый волк   Дискуссия очень быстро как я понял ушла от конкрет...   Sep 6 2007, 12:36
|- - zltigo   Цитата(серый волк @ Sep 6 2007, 15:36) Ди...   Sep 6 2007, 12:53
- - серый волк   ответ оказался очень прост: метка является символь...   Sep 6 2007, 13:33
- - bodja74   ЦитатаЕсли ваше знакомство ограничено CodeVision и...   Sep 6 2007, 18:03


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th August 2025 - 20:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01382 секунд с 7
ELECTRONIX ©2004-2016