2016-01-11 2 views
1

Я перекрестно скомпилировал приложение C++ с Visual Studio 2012 Express в Windows 7 (целевая платформа = встроенная Windows XP). Целевой ЦП не поддерживает инструкции SSE или SSE2. Поэтому я хотел бы иметь возможность дважды проверить, что DLL и EXE, которые я создаю, не используют никаких инструкций SSE или SSE2. Как я могу это сделать?Проверьте, использует ли DLL инструкции SSE

+2

Нет смысла дважды проверять, когда вы можете просто установить параметр компиляции правильно. –

+0

https://msdn.microsoft.com/en-us/library/7t5yh4fd%28v=vs.110%29.aspx/arch компилятор. –

+3

@HansPassant Я знаю об этом компиляторе, и я его использую. Тем не менее, я заметил, что наша собственная сборка QtCore4.dll разбилась на целевой платформе из-за незаконной инструкции. После проверки с помощью OllyDbg оказалось, что в нем все еще есть инструкции SSE, хотя я настроил Qt 4.8.6 с параметрами -no-sse и -no-sse2. Теперь я пытаюсь понять, почему в DLL все еще есть инструкции SSE. Я пытаюсь отследить, где в нашей сборке Qt мы забываем опцию/arch: IA32. Я планирую написать какой-то сценарий, отсюда этот пост. –

ответ

0

Это, как вы можете сделать это быстро и грязно:

  1. Run Visual Studio командной строки
  2. вызова dumpbin /disasm required.dll > dll_disasm.asm
  3. Посмотрите инструкции общего SSE/SSE2, например movss, xmm0 или xmm1

Если нет инструкции SSE/регистры найдены в DLL, вы не хорошо, если DLL не загружает что-то другое.

Смежные вопросы