Связанные сообщения
-
- Вот, на коленке родилось VladislavS.(1 знак., 25.03.2026 12:49, ссылка)
- Спасибо за пример. Вдруг заблокируют или "протухнет", кладу
картинку: Nikolay_Po(1 знак., 25.03.2026 12:57, картинка)
- Для, примера, пожалуй, стоило оптимизацию выключить. Тогда таблицу
указателей видно в коде. При раздельной компиляции библиотеки
компилятор её не выкинет, конечно же. - VladislavS.(25.03.2026 13:05)
- А не возникнет ли проблем, если библиотека сделана одним
компилятором, а приложение другим? И даже при использовании одного
компилятора не может ли измениться соглашение о вызовах при
изменении уровня оптимизации? - AlexBi(25.03.2026 23:01)
- Когда земля была чуть тёплая, Atmel в процессоре AT91RM9200 официально предоставлял набор библиотечных функций, которые можно было из прошивки дёргать. Про совместимость они вот так писили. В принципе, это как раз то что ТС хочет сделать. Там в даташите хорошо расписано как это работает. VladislavS.(1 знак., Вчера, 12:29, картинка)
- Зависит от многого. На ARM относительно стабильный ABI, изменения
были достаточно давно (с повсеместным внедрением плавучки произошёл
переход на hard float). Помнится на Coldfire в свое время
фрискейловцы изменили в какой-то момент раскладку параметров пр
регистрам, что, пмсм, стало одним из факторов окончания колдфайров.
Обычно в таких случаях добавляют какую-то прагму или атрибут для
указания "эту функцию надо вызывать по-старому". - LightElf(25.03.2026 23:52)
- Для АРМов вроде как есть какой-то стандарт, правда я не понял как
там решен вопрос передачи структур. Но для RISC-ов и MIPS-ов я не
видел такого. - AlexBi(Вчера, 00:09)
- Для MIPS есть вот такое: LightElf(13 знак., Вчера, 14:50, ссылка, ссылка)
- Для АРМов вроде как есть какой-то стандарт, правда я не понял как
там решен вопрос передачи структур. Но для RISC-ов и MIPS-ов я не
видел такого. - AlexBi(Вчера, 00:09)
- почему-то кажется, что для самого подгружаемого придется добавить
опцию position-independent code, и таки где-то положить трамплин(ы) - Vit(25.03.2026 15:43)
- Зачем PIC, если известно где во flash будет лежать код библиотеки? - VladislavS.(25.03.2026 16:13)
- во-первых, загружаемый, и почему вдруг во flash? во-вторых, даже с элементарным + (и
прочим из системной либы) возникает вопрос насчёт как такое этот
код будет доставать - хорошо ещё, если при PIC подлинкует к себе.
ну и в-третьих, вопрос инициализации для подгружаемого кода - где
тот стартап - тут решать по месту. ну или смотреть варианты с
окучиванием elf (F9), RPC (в т.ч. eRPC), интерпретаторами. КМК,
могут буть интересны решения взаимодействия 2-х ядер (а-ля Vit(10 знак., 25.03.2026 21:31, ссылка, ссылка)
- Мне кажется вы всё перевернули с ног на голову. Библиотека одна
прибита во флэш, а приложения подгружаемые. - VladislavS.(25.03.2026 22:51)
- может быть. попробовал перечитать - и так выворачивается;) - Vit(25.03.2026 23:01)
- Мне кажется вы всё перевернули с ног на голову. Библиотека одна
прибита во флэш, а приложения подгружаемые. - VladislavS.(25.03.2026 22:51)
- во-первых, загружаемый, и почему вдруг во flash? во-вторых, даже с элементарным + (и
прочим из системной либы) возникает вопрос насчёт как такое этот
код будет доставать - хорошо ещё, если при PIC подлинкует к себе.
ну и в-третьих, вопрос инициализации для подгружаемого кода - где
тот стартап - тут решать по месту. ну или смотреть варианты с
окучиванием elf (F9), RPC (в т.ч. eRPC), интерпретаторами. КМК,
могут буть интересны решения взаимодействия 2-х ядер (а-ля Vit(10 знак., 25.03.2026 21:31, ссылка, ссылка)
- Зачем PIC, если известно где во flash будет лежать код библиотеки? - VladislavS.(25.03.2026 16:13)
- А не возникнет ли проблем, если библиотека сделана одним
компилятором, а приложение другим? И даже при использовании одного
компилятора не может ли измениться соглашение о вызовах при
изменении уровня оптимизации? - AlexBi(25.03.2026 23:01)
- Для, примера, пожалуй, стоило оптимизацию выключить. Тогда таблицу
указателей видно в коде. При раздельной компиляции библиотеки
компилятор её не выкинет, конечно же. - VladislavS.(25.03.2026 13:05)
- Спасибо за пример. Вдруг заблокируют или "протухнет", кладу
картинку: Nikolay_Po(1 знак., 25.03.2026 12:57, картинка)
- В зависимости от используемого компилятора/линкера разные можно
способы предложить. В IAR, например, есть утиля isymexport, которая в принципе для того и предназначена. Минус в том, что
экспорт/импорт функций произойдет по жестко прибитым адресам и в
дальнейшем внести изменения в "закрытый бинарник" станет крайне
непросто. Зато все на автомате. - LightElf(19.03.2026 21:15)
- Дык "trampoline" = таблица вызовов по фиксированному адресу. - VLLV(24.03.2026 09:19)
- Таблица указателей на функции - это, емнип, "вектора" на умном.
Трамплины - это таблица переходов на функции. - LightElf(24.03.2026 11:45)
- Перефразируя: таблица указателей - это массив адресов функций
(значение можно загрузить в регистр, но нельзя исполнить на месте).
Таблица переходов - это готовые команды перехода с готовыми
адресами. Их можно исполнять, просто переходя, при выполнении
программы, на нужную "ячейку" таблицы. Верно я понял ваше
высказывание? - Nikolay_Po(25.03.2026 12:55)
- Именно так. Оно кагбэ не сильно принципиально, но трамплины можно удобно импортировать средствами линкера, а с векторами придется корячиться врукопашную. Меня бы напрягло писать, например, LightElf(66 знак., 25.03.2026 14:17)
- В зависимости от архитектуры вектора могут быть как таблицей
адресов, так и командами перехода. Но мы же в ЯВУ живём, зачем нам
к архитектуре привязываться. - VladislavS.(25.03.2026 13:41)
- Это не вопрос архитектуры процессора. Вектора - это указатели на функции, трамплины - это код. В минимальном виде - "jmp foo". Отличия небольшие, но есть. Особенно если реализована защита памяти. С практической точки зрения: трамплины можно удобно завернуть в import library и вызывать без этих вот "struct->foo(x)", а просто писать "foo(x)". Дальше - забота линкера. - LightElf(25.03.2026 14:07)
- Перефразируя: таблица указателей - это массив адресов функций
(значение можно загрузить в регистр, но нельзя исполнить на месте).
Таблица переходов - это готовые команды перехода с готовыми
адресами. Их можно исполнять, просто переходя, при выполнении
программы, на нужную "ячейку" таблицы. Верно я понял ваше
высказывание? - Nikolay_Po(25.03.2026 12:55)
- Таблица указателей на функции - это, емнип, "вектора" на умном.
Трамплины - это таблица переходов на функции. - LightElf(24.03.2026 11:45)
- Дык "trampoline" = таблица вызовов по фиксированному адресу. - VLLV(24.03.2026 09:19)
- да чего там хитрого-то POV(1 знак., 18.03.2026 13:00, ссылка)
- Структура с кучкой указателей на функции - вот и весь ABI. - SciFi(18.03.2026 10:01)
- +1. Указатели на функции определенного типа. И эта структура должна
использоваться для компиляции бинарника во Flash и должна
предоставляться пользователю, который разрабатывает свое
приложение. - il-2(18.03.2026 10:04)
- Есть примеры? Как правильно ключевые слова поиска гугла написать? - Make_Pic(18.03.2026 12:08)
- Примерно так Andrew_Q(2788 знак., 18.03.2026 12:57)
- Форматирование убилось - Make_Pic(19.03.2026 15:38)
- ARM Cortex-M SVC это заложенный в ARM механизм вызова функций ОС из кода пользователя. Старый добрый ДОС работал по похожему принципу, можно почитать про него. - AlexBi(18.03.2026 12:18)
- Весь текст этого топика вставить в ИИ-чат, он дальше продолжит
мысль. - SciFi(18.03.2026 12:18)
- Ох :) - Make_Pic(18.03.2026 12:39)
- Сам ты ох. Вот: SciFi(1 знак., 18.03.2026 12:47, ссылка)
- DeepSeek? - У меня другое он наплел ;) - Make_Pic(18.03.2026 12:53)
- А - увидел - Grok - Make_Pic(18.03.2026 12:53)
- Grok получше описал. - Make_Pic(18.03.2026 12:59)
- Gemini тоже довольно толковый. Наверное, DeepSeek застрял в каменном веке. - SciFi(18.03.2026 13:04)
- Grok получше описал. - Make_Pic(18.03.2026 12:59)
- А - увидел - Grok - Make_Pic(18.03.2026 12:53)
- DeepSeek? - У меня другое он наплел ;) - Make_Pic(18.03.2026 12:53)
- Сам ты ох. Вот: SciFi(1 знак., 18.03.2026 12:47, ссылка)
- Ох :) - Make_Pic(18.03.2026 12:39)
- Примерно так Andrew_Q(2788 знак., 18.03.2026 12:57)
- Есть примеры? Как правильно ключевые слова поиска гугла написать? - Make_Pic(18.03.2026 12:08)
- +1. Указатели на функции определенного типа. И эта структура должна
использоваться для компиляции бинарника во Flash и должна
предоставляться пользователю, который разрабатывает свое
приложение. - il-2(18.03.2026 10:04)
- Вот, на коленке родилось VladislavS.(1 знак., 25.03.2026 12:49, ссылка)