Re[6]: Несколько замечаний по поводу качества кода
От: EreTIk EreTIk's Box
Дата: 20.11.15 16:01
Оценка:
ETI>>Думаю, что дело в версии и/или настройках компилятора. Пример:
ETI>>
ETI>>void (*g_pFunc)() = nullptr;

ETI>>extern "C"
ETI>>__declspec(dllexport)
ETI>>void f()
ETI>>{
ETI>>    g_pFunc();
ETI>>}
ETI>>


ETI>>
>>>cl /O2 /Zi /MTd /EHsc test.cpp /link /RELEASE /OPT:REF
ETI>>Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.30729.01 for 80x86
ETI>>Copyright (C) Microsoft Corporation.  All rights reserved.

ETI>>test.cpp
ETI>>Microsoft (R) Incremental Linker Version 9.00.30729.4999
ETI>>Copyright (C) Microsoft Corporation.  All rights reserved.

ETI>>/out:test.exe
ETI>>/debug
ETI>>/RELEASE
ETI>>/OPT:REF
ETI>>test.obj
ETI>>   Creating library test.lib and object test.exp
ETI>>


ETI>>
ETI>>f:         FF25C03F4200                   jmp          d,[000423FC0]
ETI>>.00401006: CCCCCCCCCCCCCCCCCCCC           int          3
ETI>>


TSS>Это безусловно зависит от компилятора, но все таки мы говорим про windows, а она использует микрософтовский компилятор. Соответственно, с прологом там все более менее понятно. Хотя признаться, я не знаю как с этим дела в последних версиях компиляторов.


Так мой пример тоже построен на кодо-генерации MS'овских компилятора и линкера (не самых свежих — Microsoft Visual Studio 9.0).
Мой посыл был в том, что старый компилятор, которым собирали XP, мог оставлять пролог из-за недоработки или специфических опций.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.