A CPU is provided with an ability to modify its operation in accordance
with an encryption key. When a program is compiled, the program is
modified in order that execution may be performed with the CPU with its
operation modified. In order to execute program instructions, the buffer
interdependencies must match that expected by the compiler. This makes
analysis of the program operation extremely difficult. The instruction
buffer on a keyed microprocessor contains logic which is able to route a
subset of the instruction bits on the microprocessor. This selects
destination logic gates in the microprocessor which eventually reach a
programmable instruction decoder and an instruction buffer
interdependency checking logic block.