When you write code the compiler and/or assembler follows an ABI(application binary interface).
However, is it that ISAs are varying between different available microarchitectures to develop for, they provide a layer of the data processing, and they abstract some of the bare-machine operations, or differ in finalized approach?
These three things are very confusing, since each different microprocessor can have a different ISA, and is an ABI specific to an ISA? If so, you'd have to know your exact ISA per-microprocessor, and only use one that matches the specifics with an ABI to the ISA to the micro-level.
Is it just me, or does this not confuse anyone else? Wikipedia doesn't make much sense with the articles either, so can anyone help straighten the idea behind this out some more?