Every new generation of CPU introduces some sets of new instruction, ie.: MMX,3DNOW,SSE and so on.
I've got few general questions about them:
1) If some program uses for example SSE instruction can it be run on CPU that doesn't support SSE?
2) If yes , does it mean that those instuction will be changed to some greater number of simpler instuctions?
3) If not, does it mean that the real perfomance impact of such new instructions will be after few years when most CPU will support such technology (so there won't be any incompatibilities)?
4) When I compile a C++ program with optimizations does it mean that it'll use some of this new instructions? (I know that it depends on many factors, especcialy on the code, but I want some general answer) Or are they reserved mostly for programs written in asm?