The device you are reading this post on consists of a very tall
stack of layers - all the way from transistors and NAND gates all the
way up to processors, C, Linux/ Android/ iOS/ Windows to the browser.
Each of these layers may be written by a different team possibly in a different
company and the interface between these layers is documented and specified
so that each team knows what it can assume and what it must provide.
One of the most important interfaces in this stack is the one between
hardware and software that says what a processor will do if it is configured
a certain way, provided with page tables, interrupt handlers, put in a certain
privilege level and finallyprovided with a program to execute.
If you want to write a compiler, operating system, hypervisor or security
layer, then you need to know how the processor will behave.
If someone gives you a virus and asks you to figure out how it works
and how to defend against it, then you need to know how the processor will
behave.