Size: a a a

2020 December 14

s

std::slavik in pro.cxx
иначе бы нельзя было подменять в dllках вызовы функций на свои
просто нужен адрес, самый простой вариант - через статическую функцию-обертку
источник

AK

Andrei K in pro.cxx
Заманглить имя, положить в ecx адрес вектора, в eax аргумент и вызвать. Или какой там call decl
источник

AN

Alexander N in pro.cxx
Andrei K
Заманглить имя, положить в ecx адрес вектора, в eax аргумент и вызвать. Или какой там call decl
А как самому заманглить?
источник

EK

Eugene Krasnikov (ᴊɪ... in pro.cxx
Andrei K
Заманглить имя, положить в ecx адрес вектора, в eax аргумент и вызвать. Или какой там call decl
Как его манглить-то? :)
источник

s

std::slavik in pro.cxx
Alexander N
А как самому заманглить?
ну так же как компилятор
источник

s

std::slavik in pro.cxx
тока самому
источник

AN

Alexander N in pro.cxx
std::slavik
ну так же как компилятор
То есть ручками по его правилам
..
источник

s

std::slavik in pro.cxx
ну или просто взять скомпиленный бинарник и распотрошить
вариантов миллион, смотря какая задача
источник

AK

Andrei K in pro.cxx
Eugene Krasnikov (ᴊɪɴ x)
Как его манглить-то? :)
Посмотреть как это делает компилятор под который пишется эта асм вставка. Например путём сбора тестовой программы и рассмотрения её символов.
источник

AK

Andrei K in pro.cxx
Можно вообще в годболт вбить.
источник

s

std::slavik in pro.cxx
Eugene Krasnikov (ᴊɪɴ x)
Ну это можно, но это обходной путь опять же :)
ну как бы использование асм вставок - уже обходной путь и не про C++
источник

s

std::slavik in pro.cxx
magras
Нельзя брать адрес функций из стандартной библиотеки.
На сколько я понимаю, это позволяет комитету менять сигнатуру не ломая пользовательский код, например, добавив в конец списка аргументов новый аргумент со значением по-умолчанию.
ну и еще это немного не про абстрактную машину
источник

m

magras in pro.cxx
std::slavik
ну и еще это немного не про абстрактную машину
А при чем здесь абстрактная машина?
источник

s

std::slavik in pro.cxx
magras
А при чем здесь абстрактная машина?
при том что C++ код под нее пишется
источник

AK

Andrei K in pro.cxx
Andrei K
Можно вообще в годболт вбить.
источник

m

magras in pro.cxx
std::slavik
при том что C++ код под нее пишется
Абстрактная машина не мешает мне брать адрес пользовательских функций.
источник

s

std::slavik in pro.cxx
magras
Абстрактная машина не мешает мне брать адрес пользовательских функций.
указатель?
источник

m

magras in pro.cxx
std::slavik
указатель?
Да, указатель.
источник

s

std::slavik in pro.cxx
так и никто не мешает брать указатель на библиотечные функции, просто нужно знать сигнатуру
источник

EK

Eugene Krasnikov (ᴊɪ... in pro.cxx
Andrei K
Посмотреть как это делает компилятор под который пишется эта асм вставка. Например путём сбора тестовой программы и рассмотрения её символов.
В символах там имя
std::vector<int,std::allocator<int> >::vector<int,std::allocator<int> >
И вызов функции не из DLL идёт.
источник