2016-01-11 85 views
1

我在Windows 7(目標平臺= Windows XP Embedded)上使用Visual Studio 2012 Express交叉編譯C++應用程序。目標CPU不支持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指令,儘管我使用-no-sse和-no-sse2選項配置了Qt 4.8.6。我現在試圖瞭解爲什麼DLL仍然有SSE指令。我試圖追蹤我們Qt構建中我們忘記/ arch:IA32選項的位置。我打算寫一些腳本,因此這篇文章。 –

回答

0

這是你如何能做到這快速和骯髒的:

  1. 運行Visual Studio命令提示符
  2. 呼叫dumpbin /disasm required.dll > dll_disasm.asm
  3. 尋找共同SSE/SSE2指令集,例如movssxmm0xmm1

如果沒有SSE指令/ DLL中發現的寄存器,除非你的DLL加載別的東西是很好的。