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

 
 
> Аллокация функции run-time library.
RCray
сообщение Jul 29 2015, 10:33
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 170
Регистрация: 14-09-05
Из: Suwon
Пользователь №: 8 548



Для GNU есть ли возможность указать в какое место положить функции run-time library?

Сейчас, если хочу, чтобы операция выполнялась из "быстрой" памяти, приходиться ручками писать такую же функцию и задавать ей необходимые атрибуты. Проблема в том, что не всегда получается также оптимально написать функцию на C, а в асм лезть не хочу.

Для примера - деление ___udivsi3.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
Aaron
сообщение Jul 29 2015, 11:27
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 243
Регистрация: 5-10-06
Из: Зеленоград
Пользователь №: 21 007



Точно не скажу, ибо не знаю, но навскидку я бы пошёл таким путём:
- можно настроить компилятор/линковщик, чтобы содержимое каждого файла было в своей секии (по имени файла)
- настроить линковку проекта так, чтобы нужные файлы/секции располагались в ram

Сообщение отредактировал Aaron - Jul 29 2015, 11:28
Go to the top of the page
 
+Quote Post
RCray
сообщение Jul 30 2015, 01:00
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 170
Регистрация: 14-09-05
Из: Suwon
Пользователь №: 8 548



линкер файл положит, куда вы ему скажете, а используемую при этом функцию run-time library (все равно) положит в .text секцию.



Хотел стандартно, а получилось так:
1. Разбираем библиотеку на отдельные объектники
<toolchain name>-ar.exe -x libgcc.a
2. Копируем все нужные файлы куда вам удобно.
3. Убираем ключ линкера -lgcc, и наоборот добавляем <path to your _new_ runtime library files>/*.o
В случае, если вы их положили просто в папку ко всём остальным объектникам, можно так ./obj/_*.o
т.к. интересующие нас файлы начинаются с подчеркивания.
4. Если, как у меня в примере, нужно жестко задать локацию только одной функции ___udivsi3,
то в описании секций вместо
*(.text)
пишем
*(EXCLUDE_FILE (./obj/_udivsi3.o) .text)
5. А в описании к целевой секции пишем
.<name of section> : ... {
...
./obj/_udivsi3.o
...
} > <name of section>

В исходниках ничего менять не надо. Как и писать свои функции.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 07:11
Рейтинг@Mail.ru


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