Re[9]: Глюк оптимизатора?
От: rm822 Россия  
Дата: 19.01.07 09:32
Оценка:
Здравствуйте, Minstrell, Вы писали:

M>Здравствуйте, rm822, Вы писали:


R>>В линкере поставь DebugInfo: Yes


M>(Disassembly cannot be displayed in run mode.) ... Подозрение у меня, что после link-time optimization он вообще не лезет в код... Запостите, пожалуйста, командные строчки компилятора и линкера при таких настройках, чтобы link-time optimization была задействована и при этом можно было посмотреть код.

compiler
/Ox /GL /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /FD /EHsc /MD /GS- /Yu"stdafx.h" /Fp"Release\TestOptimize.pch" /Fo"Release\\" /Fd"Release\vc80.pdb" /W4 /nologo /c /Wp64 /Zi /TP /errorReport:prompt
linker
/OUT:"D:\cpp\TestOptimize\Release\TestOptimize.exe" /INCREMENTAL:NO /NOLOGO /MANIFEST /MANIFESTFILE:"Release\TestOptimize.exe.intermediate.manifest" /DEBUG /PDB:"d:\cpp\testoptimize\release\TestOptimize.pdb" /SUBSYSTEM:CONSOLE /OPT:REF /OPT:ICF /LTCG /MACHINE:X86 /ERRORREPORT:PROMPT kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
это релиз с полной оптимизацией однако я вижу строчки, вероятно про несовместимость с /Z* говориться в том плане что значений переменнных не видно.

M>Только мы ушли не в ту сторону. Ну чем плоха IDA...

Всем хороша но в данном случае это obfuscating tool

M>Пробовал я варьировать настройки оптимизации. Так вот при /GL- время выполнения одной итерации сокращается с 720 тактов до 95. Оператор умножения, правда, становится не inline. Однако в цикле НЕТ лишнего кода. Чем не баг: предварительно вычисленная переменная заново вычисляется в теле цикла, замедляя код в 7 раз.

Единственное с чем компилятор обязан в данном случае считаться это volatile и получение адреса, но ИМХО либо вы неверно интерпретируете результаты дизассембла.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.