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

 
 
> как разместить подпрограмму по заданному адресу
1921
сообщение Jul 25 2011, 07:23
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 29-09-10
Пользователь №: 59 820



Почтенные гуру!
Вот выскочила проблемка, не подскажите ли: можно ли разместить подпрограммку по определённому адресу в flash?
Я уже делал такое с данными, прописав в линкере сегмент по определённому адресу:

#pragma constseg=MY_SEG;
<данные>
#pragma constseg=default

А можно ли такую же вещь сделать с подпрограммой? И как это сделать?

main();
{
prog1();
prog2(); - допустим, я хочу разместить эту программу по определённому адресу, а ещё лучше, в выделенном сегменте, в котором будет сидеть только она. Можно?
prog3();
}

Я сейчас полезу в первоисточники, но ваше направляющее воздействие позволит значительно облегчить мои метания. Если не трудно, поделитесь опытом!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sergeeff
сообщение Sep 1 2011, 19:10
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Коллеги! Поясните, пожалуйста, как вы потом планируете работать с такой программой? Распихали "постоянные" функции по конкретным фиксированным адресам. Понятно. Написали некую прикладную программу, которая содержит вызовы этих самых функций. И как линкеру сказать, что эти функции:

1. Определены.
2. Адреса их такие-то.

Непонятно.
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 1 2011, 21:31
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(sergeeff @ Sep 2 2011, 00:10) *
Коллеги! Поясните, пожалуйста, как вы потом планируете работать с такой программой?
Как будут использовать их вопрошающие, я не знаю. Обычно такие финты только для функций типа "самодельного" бутлоадера практикуются.
Цитата(sergeeff @ Sep 2 2011, 00:10) *
1. Определены.
Для компилятора достаточно прототипов функций, т.к. он проверяет соответствие типа и формата аргументов при вызове. Вызов функций возможен через указатель на нее.
Цитата(sergeeff @ Sep 2 2011, 00:10) *
2. Адреса их такие-то.
При таком раскладе возможна работа только с указателями на функции. Определяете указатель на функцию и загружаете его значением адреса функции, который вам известен заранее.
P.S. если это только не булоадер или какие-то подпрограммы с шифрованием данных, то такие заморочки с принудительным размещением функций могут свидетельствовать о привычках завсегдатая ассемблера, который совсем недавно перешел на Си. ИМХО конечно sm.gif
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 3rd August 2025 - 14:38
Рейтинг@Mail.ru


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