Вопрос Щитпост 2

Статус
В этой теме нельзя размещать новые ответы.
Забаненный
Статус
Оффлайн
Регистрация
6 Авг 2022
Сообщения
128
Реакции[?]
25
Поинты[?]
4K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
всем привет!
делая свою непревзойденную базу для читов на разные игры, задался вопросом - сильно ли переход от одного "участка" памяти к другому замедляет программу.
задался вопросом по причине строения базы на "модулях" (обычных классах), доступ к которым был реализован через make_unique, из-за чего основная программа находилась условно на 0x13111337, а указатель на 0x1.
вопрос в не совсем в ту же топку, но в любом случае - как работают инлайн функции и в чем их отличие от переменных (кроме отсутствия нарушения одр)
и что будет, если сделать функции класса инлайн? (слова про автоматический инлайн в классах не работает, аргументом к тому - шаблонная функция внутри класса (без инлайна работать не будет) (+ не знаю почему, не будет работать реализация в кпп файле, только в х или хпп (кому как удобно))
заранее спасибо всем за ответы! ❤
 
Searching for myself
Пользователь
Статус
Оффлайн
Регистрация
29 Сен 2021
Сообщения
212
Реакции[?]
69
Поинты[?]
11K
вопрос в не совсем в ту же топку, но в любом случае - как работают инлайн функции и в чем их отличие от переменных (кроме отсутствия нарушения одр)
Что нахуй, действительно в чем же отличие от функции и переменной... Придерживаться odr тут не знаю
и что будет, если сделать функции класса инлайн?
Компилятор просто вставит тело твоей функции в место где ты её вызвал (улучшаем производительность - увеличиваем размер бинарника)
шаблонная функция внутри класса (без инлайна работать не будет) (+ не знаю почему, не будет работать реализация в кпп файле, только в х или хпп (кому как удобно))
Потому что компилятор не знает определение фикции в момент вызова (из-за этого принято объявлять шаблонные функции в файлах заголовков или в .tpp подобных)
задался вопросом по причине строения базы на "модулях" (обычных классах), доступ к которым был реализован через make_unique, из-за чего основная программа находилась условно на 0x13111337, а указатель на 0x1.
Тут я не уверен, но на этапе инжекта память для твоей длл будет в пределах PAS (process address space), и ни как не может быть по адресу который ты указал, но адреса всегда будут разные из-за ASLR (address space layout randomization)
задался вопросом - сильно ли переход от одного "участка" памяти к другому замедляет программу.
Тут смотря как ты насилуешь память родительского процесса
 
Участник
Статус
Оффлайн
Регистрация
5 Окт 2017
Сообщения
784
Реакции[?]
173
Поинты[?]
11K
Компилятор просто вставит тело твоей функции в место где ты её вызвал (улучшаем производительность - увеличиваем размер бинарника)
В зависимости от размера инлайн-функции и количества заинлайненных функций, производительность может напротив УХУДШИТЬСЯ, поскольку кэш инструкций не такой и резиновый. Компилятор лучше знает, что заинлайнить, а что нет.
 
Searching for myself
Пользователь
Статус
Оффлайн
Регистрация
29 Сен 2021
Сообщения
212
Реакции[?]
69
Поинты[?]
11K
В зависимости от размера инлайн-функции и количества заинлайненных функций, производительность может напротив УХУДШИТЬСЯ, поскольку кэш инструкций не такой и резиновый. Современному компилятору лучше знать, что заинлайнить, а что нет.
Ну я это не писал, так как надеялся что данный человек это загуглит, или знает
 
Забаненный
Статус
Оффлайн
Регистрация
6 Авг 2022
Сообщения
128
Реакции[?]
25
Поинты[?]
4K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Что нахуй, действительно в чем же отличие от функции и переменной... Придерживаться odr тут не знаю

Компилятор просто вставит тело твоей функции в место где ты её вызвал (улучшаем производительность - увеличиваем размер бинарника)

Потому что компилятор не знает определение фикции в момент вызова (из-за этого принято объявлять шаблонные функции в файлах заголовков или в .tpp подобных)

Тут я не уверен, но на этапе инжекта память для твоей длл будет в пределах PAS (process address space), и ни как не может быть по адресу который ты указал, но адреса всегда будут разные из-за ASLR (address space layout randomization)

Тут смотря как ты насилуешь память родительского процесса
по первому, если посмотреть немного внимательнее, то, наверное, можно увидеть "как РАБОТАЮТ", а не "как ИСПОЛЬЗОВАТЬ", убедительная просьба в следующий раз немношка сдерживать свои эмоции и не долбиться в глаза!
Что нахуй, действительно в чем же отличие от функции и переменной... Придерживаться odr тут не знаю

Компилятор просто вставит тело твоей функции в место где ты её вызвал (улучшаем производительность - увеличиваем размер бинарника)

Потому что компилятор не знает определение фикции в момент вызова (из-за этого принято объявлять шаблонные функции в файлах заголовков или в .tpp подобных)

Тут я не уверен, но на этапе инжекта память для твоей длл будет в пределах PAS (process address space), и ни как не может быть по адресу который ты указал, но адреса всегда будут разные из-за ASLR (address space layout randomization)

Тут смотря как ты насилуешь память родительского процесса
интересный вопрос - откуда ты взял длл файл. не думаю, что в теме это обязательно надо было указывать, у меня экстернал
Что нахуй, действительно в чем же отличие от функции и переменной... Придерживаться odr тут не знаю

Компилятор просто вставит тело твоей функции в место где ты её вызвал (улучшаем производительность - увеличиваем размер бинарника)

Потому что компилятор не знает определение фикции в момент вызова (из-за этого принято объявлять шаблонные функции в файлах заголовков или в .tpp подобных)

Тут я не уверен, но на этапе инжекта память для твоей длл будет в пределах PAS (process address space), и ни как не может быть по адресу который ты указал, но адреса всегда будут разные из-за ASLR (address space layout randomization)

Тут смотря как ты насилуешь память родительского процесса
при условии, что у меня экстернал, каков вердикт? (ответ про память родительского процесса)
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу