When writing in a language such as C, the compiler theoretically takes your human readable code and translates it into machine code - relatively hardware-dependent atomic instructions. Each CPU architecture seems to have an Instruction Set which is implemented for the CPU in some sort of hard-wired way, yet it seems that different CPUs can implement the same ISA in different ways, say x86.
Does this mean that an ISA essentially acts as an abstraction layer for the hardware? x86 says: These are the standard instructions that I offer - you don't need to know HOW the hardware does it, just know that it does and you can use them by sending me the following machine code?
Thus, if I were to construct a new CPU and I implemented my CPU in such a way that it followed the x86 standard, I would not need to write a compiler specific to my hardware, but that any compiler which compiled from C to the x86 ISA would be sufficient for my new CPU?