Несколько экземпляров одной и той же функции в разных местах памяти в C

Я хочу, чтобы один и тот же набор инструкций выполнялся из другого места в памяти. Используя атрибут и файл компоновщика, я могу указать раздел адреса / памяти, в котором должно находиться определение функции:

void TaskFxn_0(UArg a0, UArg a1) __attribute__((section(".task_0")));

Одно из решений грубой силы - иметь несколько копий одной и той же функции и помещать их в разные места в памяти:

void TaskFxn_0(UArg a0, UArg a1)  __attribute__((section(".task_0")));
void TaskFxn_1(UArg a0, UArg a1)  __attribute__((section(".task_1")));
void TaskFxn_2(UArg a0, UArg a1)  __attribute__((section(".task_2")));
void TaskFxn_3(UArg a0, UArg a1)  __attribute__((section(".task_3")));
void TaskFxn_4(UArg a0, UArg a1)  __attribute__((section(".task_4")));
void TaskFxn_5(UArg a0, UArg a1)  __attribute__((section(".task_5")));

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

Есть ли лучший способ сделать это?

У вопроса отсутствует надлежащая мотивация - каков вариант использования?

Antti Haapala 12.10.2018 09:26

@AnttiHaapala Допустим, мне нужно запускать код с вытеснением кеша инструкций при каждом переключении задач, и циклическое выполнение этих задач позволило бы мне делать это на постоянной основе. Я размещаю функции в тех местах памяти, которые соответствуют одной и той же записи в кэше. Ручное вытеснение кеша невозможно.

FatSnake 12.10.2018 10:17

Вы всегда можете использовать для этого макрос X.

Antti Haapala 12.10.2018 10:47
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
146
0

Другие вопросы по теме