Last year I took introductory computer architecture. The course focused mainly on microcontrollers rather than PCs (I'm taking that one next year), and we learned about things like instruction sets. But the discussion was mainly limited to microcontrollers and very simple architecture. I also know nothing about compilers, so that might be a cause for my lack of understanding. So what I'm wondering is, how does a program run both on a PC with one kind of CPU (say, an Intel i5) and a PC with another kind of CPU (say, an AMD FX processor)? Is the instruction set standardized across the industry, and compilers use the standard instructions?