> If you think about it, all software is already an abstraction of hardware by definition.
Not really—interaction with a lot of hardware is defined by software. Just looking at a cpu you have no clue how someone would use it or what they would use it for or even what kind of capabilities it has for human interaction.