-
- Вот тута чуваки разруливают только R_ARM_ABS32 и R_ARM_THB_JMP/CALL
- и не рыдают. - LightElf(15.09.2020 00:56, ссылка)
- Ты уверен, что хорошо понимаешь что они делают? По-моему у них уже
PIC-бинарник. Только с динамическими релокациями. Я с контроллерами
не работаю, мне сложно для thumb сказать. Но вот я взял проект
собираемый в thumb и для всей кучи *.o файлов вижу там массу видов
разных релокаций: fk0(1894 знак., 15.09.2020 02:31, ссылка)
- Я уверен, что ты преувеличиваешь проблему. У ТС нет задачи
"загрузить произвольно взятый непонятно откуда ELF". - LightElf(15.09.2020 12:06)
- От пионерской паделки до продукта -- шаг через пропасть. Где
вылезают нюансы о которых даже не догадывался. Всегда так. И мы не
определились релокации или шаред либа. Если первый вариант, то это
гиблое дело (помимо прочего сложность приводит к невыявленным
ошибкам, а расходы на разработку и тестирование уходят в космос).
Если шаред либа, то скорей вариант с тремя типами релокаций
кончится добавлением четвёртого и может пятого своими силами и всё
даже заработает. Но fk0(196 знак., 15.09.2020 12:41)
- Какое связывание символов, ты о чем? Связывание сделает линкер.
Модули у ТС самодостаточные, не имеют импортов/экспортов. LightElf(127 знак., 15.09.2020 13:23 - 13:54)
- модули могут получать доступ к функциям основной логики через
таблицу указателей размещенную по прибитому адресу! С этим не
должно быть проблем! - Aleksey_75(15.09.2020 13:27)
- Не надо прибивать адреса. Верней надо, но ровно один адрес одной функции. Нужно лишь сделать самодельный недо-COM. Где эта одна функция в зависимости от аргументов реализует несколько функций, вроде получения версии, получения интерфейса по заданным параметрам. Предполагается что компонент (библиотека) может реализовать несколько интерфейсов. А интерфейс -- это структура из набора указателей на функции. Т.е. загружаешь библиотеку, зовёшь единственную функцию и говоришь ей fk0(17590 знак., 16.09.2020 04:46, ссылка)
- Может быть, логичнее вообще подгружаемые модули сделать в виде
интерпретируемых скриптов. - SciFi(15.09.2020 13:35)
- два варианта модулей именно так и сделаны, оформлены в виде массива
структур, основная логика их разбирает и делает то что нужно, у
меня эти модули собирает даже не arm компилер а CVI. Но эти модули
достаточно примитивны, отсутствует математика. С третим вариантом
все сложнее все сложнее, там полноценные функции с математикой и
прочим! Я думал об этом, но это надо писать свой интерпретатор по
сути свой язык придумывать ))) пока отказался! Если есть готовое
нечто похожее с Aleksey_75(24 знак., 15.09.2020 13:56)
- Pawn SciFi(76 знак., 15.09.2020 14:09, ссылка)
- Мне кажется, что это не совсем решение. Код ВМ вы запустите, но он
же не сфероконь в вакууме: нужно куда-то выдавать результат,
какие-то функции нативного кода дёргать из ВМ, что в свою очередь
потребует знать адреса этих функций, переменных, и т.п. Dingo(76 знак., 16.09.2020 10:25)
- Вы не в теме. Там вакуумом и не пахнет, можно вызывать функции в ту
и в другую сторону, с передачей данных трудностей тоже нет. - SciFi(16.09.2020 10:52)
- Откуда вакуум? "ВМ" - виртуальная машина, у автора - abstarct
machine. Проблема не в вызове функций, а в том, что вызываемые
вновь добавленые должны быть position independed. Если идут с
обновлённой версией прошивки. То есть от чего уходили к тому и
вернулись. Pawn можно применить, но только если новых функций на
нативном машинном коде добавляться не будет. Dingo(361 знак., 16.09.2020 11:46)
- Он уже пояснял. Речь о том, что весь код в память не лезет, а не о том, что "обновлять по частям" >>> - SciFi(16.09.2020 12:05, ссылка)
- Откуда вакуум? "ВМ" - виртуальная машина, у автора - abstarct
machine. Проблема не в вызове функций, а в том, что вызываемые
вновь добавленые должны быть position independed. Если идут с
обновлённой версией прошивки. То есть от чего уходили к тому и
вернулись. Pawn можно применить, но только если новых функций на
нативном машинном коде добавляться не будет. Dingo(361 знак., 16.09.2020 11:46)
- Вы не в теме. Там вакуумом и не пахнет, можно вызывать функции в ту
и в другую сторону, с передачей данных трудностей тоже нет. - SciFi(16.09.2020 10:52)
- спасибо! гляну! - Aleksey_75(15.09.2020 14:14)
- Мне кажется, что это не совсем решение. Код ВМ вы запустите, но он
же не сфероконь в вакууме: нужно куда-то выдавать результат,
какие-то функции нативного кода дёргать из ВМ, что в свою очередь
потребует знать адреса этих функций, переменных, и т.п. Dingo(76 знак., 16.09.2020 10:25)
- Pawn SciFi(76 знак., 15.09.2020 14:09, ссылка)
- два варианта модулей именно так и сделаны, оформлены в виде массива
структур, основная логика их разбирает и делает то что нужно, у
меня эти модули собирает даже не arm компилер а CVI. Но эти модули
достаточно примитивны, отсутствует математика. С третим вариантом
все сложнее все сложнее, там полноценные функции с математикой и
прочим! Я думал об этом, но это надо писать свой интерпретатор по
сути свой язык придумывать ))) пока отказался! Если есть готовое
нечто похожее с Aleksey_75(24 знак., 15.09.2020 13:56)
- модули могут получать доступ к функциям основной логики через
таблицу указателей размещенную по прибитому адресу! С этим не
должно быть проблем! - Aleksey_75(15.09.2020 13:27)
- Какое связывание символов, ты о чем? Связывание сделает линкер.
Модули у ТС самодостаточные, не имеют импортов/экспортов. LightElf(127 знак., 15.09.2020 13:23 - 13:54)
- От пионерской паделки до продукта -- шаг через пропасть. Где
вылезают нюансы о которых даже не догадывался. Всегда так. И мы не
определились релокации или шаред либа. Если первый вариант, то это
гиблое дело (помимо прочего сложность приводит к невыявленным
ошибкам, а расходы на разработку и тестирование уходят в космос).
Если шаред либа, то скорей вариант с тремя типами релокаций
кончится добавлением четвёртого и может пятого своими силами и всё
даже заработает. Но fk0(196 знак., 15.09.2020 12:41)
- Я уверен, что ты преувеличиваешь проблему. У ТС нет задачи
"загрузить произвольно взятый непонятно откуда ELF". - LightElf(15.09.2020 12:06)
- Ты уверен, что хорошо понимаешь что они делают? По-моему у них уже
PIC-бинарник. Только с динамическими релокациями. Я с контроллерами
не работаю, мне сложно для thumb сказать. Но вот я взял проект
собираемый в thumb и для всей кучи *.o файлов вижу там массу видов
разных релокаций: fk0(1894 знак., 15.09.2020 02:31, ссылка)
- Data тоже может ползать. Компиляторы могут агрегатировать данные в ОЗУ, для доступа к ним, относительно одного регистра. - BlackMorda(14.09.2020 20:05)
- Вот тута чуваки разруливают только R_ARM_ABS32 и R_ARM_THB_JMP/CALL
- и не рыдают. - LightElf(15.09.2020 00:56, ссылка)