I'm looking for the terminology to describe the stack between user level programs and the hardware. For example, in a typical non-virtualized environment, this stack is:
User program <-> Application Binary Interface <-> Operating System <-> Hardware
User level programs access the system calls through the ABI, and the OS executes the operation on the hardware on behalf of the program. In the other direction, data coming from the hardware is given to the OS, which passes it up to the program.
The terminology I've been using up to this point is application stack, but this term means something different.