| 
48 | 48 | 
 
  | 
49 | 49 | // MSVC - Sections  | 
50 | 50 | 
 
  | 
51 |  | -#define DECLARE_SECTION(NAME) __pragma(section(NAME, execute))  | 
 | 51 | +#define DECLARE_DATA_SECTION(NAME) __pragma(section(NAME, read))  | 
 | 52 | +#define DECLARE_CODE_SECTION(NAME) __pragma(section(NAME, execute))  | 
52 | 53 | 
 
  | 
53 | 54 | #define SECTION_READONLY "R"  | 
54 | 55 | #define SECTION_READWRITE "RW"  | 
55 | 56 | #define SECTION_EXECUTE_READ "ER"  | 
56 | 57 | #define SECTION_EXECUTE_READWRITE "ERW"  | 
57 | 58 | #define CHANGE_SECTION_ATTRIBUTES(NAME, ATTRIBUTES) LINKER_OPTION("/SECTION:" NAME "," ATTRIBUTES)  | 
58 | 59 | 
 
  | 
59 |  | -#define DEFINE_SECTION(NAME, ATTRIBUTES)        \  | 
60 |  | -	DECLARE_SECTION(NAME)                       \  | 
 | 60 | +#define DEFINE_DATA_SECTION(NAME, ATTRIBUTES)   \  | 
 | 61 | +	DECLARE_DATA_SECTION(NAME)                  \  | 
 | 62 | +	CHANGE_SECTION_ATTRIBUTES(NAME, ATTRIBUTES)  | 
 | 63 | + | 
 | 64 | +#define DEFINE_CODE_SECTION(NAME, ATTRIBUTES)   \  | 
 | 65 | +	DECLARE_CODE_SECTION(NAME)                  \  | 
61 | 66 | 	CHANGE_SECTION_ATTRIBUTES(NAME, ATTRIBUTES)  | 
62 | 67 | 
 
  | 
63 | 68 | #define MERGE_SECTION(FROM, TO) LINKER_OPTION("/MERGE:" FROM "=" TO)  | 
64 | 69 | 
 
  | 
65 | 70 | #define DEFINE_DATA_IN_SECTION(NAME) __declspec(allocate(NAME))  | 
66 | 71 | #define DEFINE_CODE_IN_SECTION(NAME) __declspec(code_seg(NAME))  | 
67 | 72 | 
 
  | 
 | 73 | +// MSVC - Optimization  | 
 | 74 | + | 
 | 75 | +#define DISABLE_OPTIMIZATION(OPTION) \  | 
 | 76 | +	__pragma(optimize(OPTION, off))  | 
 | 77 | + | 
 | 78 | +#define ENABLE_OPTIMIZATION(OPTION) \  | 
 | 79 | +	__pragma(optimize(OPTION, on))  | 
 | 80 | + | 
 | 81 | +#define DISABLE_OPTIMIZATION_BEGIN(OPTION) \  | 
 | 82 | +	DISABLE_OPTIMIZATION(OPTION)           \  | 
 | 83 | +	extern "C++"  | 
 | 84 | + | 
 | 85 | +#define DISABLE_OPTIMIZATION_END(OPTION) \  | 
 | 86 | +	ENABLE_OPTIMIZATION(OPTION)  | 
 | 87 | + | 
 | 88 | +// Definitions  | 
 | 89 | + | 
68 | 90 | #ifndef PROCESSOR_FEATURE_MAX  | 
69 | 91 | #define PROCESSOR_FEATURE_MAX 64  | 
70 | 92 | #endif // !PROCESSOR_FEATURE_MAX  | 
 | 
0 commit comments