Проверьте, встроена ли конкретная функция - компилятор Intel

У меня есть двоичные библиотеки C/C++ (*.dll, *.sys), файлы obj, из которых они состоят, и их символы (pdb), но не исходный код и не файлы карт.
Согласно символам они были построены компилятором Intel (для Windows).

Есть ли способ проверить, встроена ли конкретная функция?

Заранее спасибо.

1 ответ

Решение

ICC особенно агрессивен с встраиванием, и во многих случаях, когда функция объявлена ​​как inline (и особенно если это __forceinlineна MSVC), на самом деле он выдаст ошибку на этапе компиляции, если не сможет ее встроить (очевидно, в зависимости от настроек компиляции вашего проекта).

Тем не менее, честно говоря, единственный способ сделать то, что вам нужно, - это подключить отладчик, приостановить приложение в MSVC, переключиться в режим ASM и выполнить поиск вызовов для функции, которую вы ищете по имени (вы говорите, C/C++ имеет значение, которое, как и в случае с C++, вам придется искать искаженное имя). Если вы найдете вызовы функции (call _myFunc), это не указано.

В противном случае, если вы знаете, где искать, просмотрите ASM, чтобы найти функцию вызывающего абонента, и проверьте ее источник, чтобы убедиться, что вызов вызываемого абонента либо есть, либо его нет.

Это может звучать довольно устрашающе, но на самом деле это достаточно просто и просто ctrl+f далеко.

Другие вопросы по тегам