САБЖ как сделать так, чтобы не было джампов на функцию, а сразу шло ее тело Сейчас к примеру вот такой код fa = &MyFunc; возвращает указатель на джамп, который в свою очередь передает управление на тело функции. Можно сделать так, чтобы было сразу тело? без джампов?
int2e Отключить? MyFunc(...)? Не понятен контекст проблемы. Если передаёшь указатель на функцию в другую функцию, то могут помочь объекты - функции. Код (Text): #include <iostream> class Func1 { public: int operator ()(int a, int b) const { return a + b; } }; class Func2 { public: int operator ()(int a, int b) const { return a - b; } }; template <typename T> void foo(const T& f) { std::cout<<f(2, 2)<<std::endl; } int main (int argc, char* argv[]) { foo(Func1()); foo(Func2()); } Шаблон foo будет специализироваться конкретным типом - объект - функция, а значит внутри foo будет доступна конкретная реализация этого объекта - функции, а следовательно компилятору будет легче сделать inline.
int2e это не оптимизация. если MyFunc описана в другом объектнике, то жмп влепит линкер. Чтоб получить тело ф-и в том же модуле создайте экспортируемую переменную которой присвойте адрес вашей функи и впоследствии из нее и читайте.
_basmp_ Я думаю что под телом, он подразумевает инлайн, а для инлайна нужна реализация. Что-то я не понял, о чём это.
_basmp_ Дошло. Но только не понимаю откуда там взяться лишнему jmp? В дебаге ещё понять можно. Но в релизе этого говна быть не должно.