 Occasionally, a successor design will discontinue or alter the meaning of some instruction code (typically because it is needed for new purposes), affecting code compatibility to some extent; even nearly completely compatible processors may show slightly different behavior for some instructions, but this is rarely a problem.Systems may also differ in other details, such as memory arrangement, operating systems, or peripheral devices.Because a program normally relies on such factors, different systems will typically not run the same machine code, even when the same type of processor is used.