inline

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

inline

Сообщение Seenkao » 07.04.2021 04:21:18

Интересует будет ли inline работать из скомпилированной DLL/SO библиотеки? (по моему я бред написал... это надо реализовывать самому, если так уж важно подобное?)
Seenkao
постоялец
 
Сообщения: 246
Зарегистрирован: 01.04.2020 03:37:12

Re: inline

Сообщение скалогрыз » 07.04.2021 04:47:47

что значит "inline" из скомпилированной DLL?

из динамической библиотеки функции загружаются адресом (GetProcAddress).
адрес является агрументом для инструкции call (и ей подобной на целевой архитектуре)
что уже и есть НЕ-inline.

Чтобы сделать из некой функции подгруженной из DLL/SO inline, необходимо модифицировать собственный код, заменив все места вызова "call" непосредственно на тело функции. (Тело функции найти несложно, есть же её адрес! но вот зармер тела функции можно либо предположить на основе информации о бинарном файле, либо прочитать из debug-info, если он есть)
Кроме "копируемое" тело функции необходимо так же менять, чтобы использовались правильные переменные, регистры и адреса памяти.

...общий смысл - переделывать "произвольную функцию" из DLL/SO в inline, это задача на дисассемблирование и перекомпиляцию.
Задачу можно решить, если
1) есть надёжный и достоверный DebugInfo (привет Cheb-у)
2) если решать её нужно разово, для конкретного приложения (н.р. используется для взлома)

Проще уж взять какой-нить JIT компилятор, и загружать код из удобного байткода, чем машинных инструкций.

И на .dll это тоже вполне себе ложится, т.к. dll-ка может возвращать байт код функции, который при исполнении JIT-ить...
Хотя... даже это не выход, ведь следующий шаг для inline-а это вшить тело одной функции в другую, а это вновь задача, на разбор код, и соединение переменных и их местоположения.

...а зачем тебе это? пишешь свой .NET?
скалогрыз
долгожитель
 
Сообщения: 1772
Зарегистрирован: 03.09.2008 02:36:48

Re: inline

Сообщение Seenkao » 07.04.2021 04:59:21

Нет, я для информации.

Благодарю за развёрнутый ответ. Как и писал "бред" спросил. Если реализовывать подобное, то самому код писать... будет ли овчинка выделки стоить? )))

Просто проверил работает или нет инструкция inline - в обычном коде, да работает. Что позволит избежать "бредовых" (по моему мнению) ситуаций с кодом.
Seenkao
постоялец
 
Сообщения: 246
Зарегистрирован: 01.04.2020 03:37:12


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru
cron