2013-11-13 4 views
1

Возможно ли разместить определенную библиотечную функцию C в указанной ячейке памяти с помощью компилятора GNU GCC.?Функции библиотеки c в определенной памяти

Я использую avr-gcc для компиляции приложения. Точная цель этого - мне нужно написать фрагмент кода, который содержит вызов функции fscanf, и я хочу, чтобы весь код для этого приложения и зависимых функций находился в определенном диапазоне адресов.

ответ

2

Не определенная функция, но если у вас есть контроль над исходным кодом для библиотеки, вы можете поместить функцию в определенный сегмент, а затем использовать linker script для размещения этого сегмента в определенном месте.

+0

Я хочу переместить функцию fscanf, возможно ли разместить функцию библиотеки C (ее уже скомпилированную)? – ted

+0

@ted К сожалению нет. Вы не можете получить доступ к отдельным функциям, только к сегментам, используя скрипты компоновщика. Если функция уже не находится в определенном сегменте, это невозможно. Это очень необычно, обычно все сегменты кода (как из вашей программы, так и из библиотек) все равно помещаются в память, можете ли вы подробно остановиться на * почему * вы хотите поместить некоторые отдельные функции отдельно от остальной части кода? (См. [«Что такое проблема XY»] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)). –

+0

Цель состоит в том, чтобы поместить всю программу в определенный диапазон памяти в памяти. В моем коде я вызываю функцию sscanf. И я смог разместить основную функцию, которую я написал в определенном разделе, скажем 0x1E000. Но моя проблема в том, что функция sscanf определена в другой памяти, скажем, 0x200. Моя цель - поместить весь мой код в диапазон 0x1E000 -> 0x1F000. – ted

Смежные вопросы