Перейти к содержанию
    

Аллокация функции run-time library.

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

 

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

 

Для примера - деление ___udivsi3.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Точно не скажу, ибо не знаю, но навскидку я бы пошёл таким путём:

- можно настроить компилятор/линковщик, чтобы содержимое каждого файла было в своей секии (по имени файла)

- настроить линковку проекта так, чтобы нужные файлы/секции располагались в ram

Изменено пользователем Aaron

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

линкер файл положит, куда вы ему скажете, а используемую при этом функцию 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>

 

В исходниках ничего менять не надо. Как и писать свои функции.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...