What compilers do not like

As we've seen in the subsection about compiler tricks, compilers are at their best when they know exactly what data is being used in their computations. We've seen that, in such a case, they can even optimize entire algorithms away, replacing them with a simple mov  eax, NNN. However, when a compiler isn't sure about the data, it has to generate extra-defensive code! There are two such sources of uncertainty, as is discussed next.