I want to perform math compares using constants so that we test that the compare operation performs correctly. The compiler obviously recognizes that the compare operation produces a true result with the constants given so it doesn't generate any code for it. What can I specify to the compiler to tell it to generate code for what it sees and not perform any optimization? Here is an example piece of the code:
BOOL BoolResult = FALSE; /*--------------------------------------------------- * integer compare operations *---------------------------------------------------*/ if ( (10000 < 20000) && (20000 <= 30000) && (30000 > 25000) && (25000 >= 20000) && (20000 == 20000) && (20000 != 20001) ) { BoolResult = TRUE; }
That is a fundamental misconception of the nature of a high-level language!
You should not think of HLL source code as a sequence of instructions that the compiler simply transliterates into a sequence of machine instructions.
If you want to guarantee a specific set of machine instructions then, as already noted, you must write in assembler.