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

 
 
> KEIL ARM MDK 4.х и взаимодействие Assembler и С., Как узнать в С коде размер секции данных, созданной ассемблером?
KnightIgor
сообщение Aug 16 2011, 17:14
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Привет коллегам.

Имеется ARM MDK 4.х от KEIL. В различных ассемблерных файлах одного проекта происходит вызов макро, которое размещает в предопределенной секции кода некоторое слово (адрес процедуры):

MACRO
DEFINE_MAIN_ENTRY $USER_MAIN

AREA DSP_MAIN_TABLE ; "open" section

EXTERN $USER_MAIN
DCD $USER_MAIN ; allocate a word

MEND


В главном модуле идет один раз объявление:

AREA DSP_MAIN_TABLE, DATA, READONLY
EXPORT DSP_MAIN_TABLE

А по проекту раскиданы:

DEFINE_MAIN_ENTRY PROC1

...
DEFINE_MAIN_ENTRY PROC2

и т.д.

В итоге после компиляции и сборки появляется таблица в секции с именем DSP_MAIN_TABLE, причем количество элементов в таблице (размер) определяется количеством вызовов макро. Начальный адрес таблицы есть само имя секции DSP_MAIN_TABLE. В С коде конструкцией вроде extern void * DSP_MAIN_TABLE можно заполучить адрес таблицы в памяти. Внимание - вопрос: как в С коде узнать еще, какой размер имеет таблица, то есть, каков размер секции?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 04:06
Рейтинг@Mail.ru


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