I\'m programming a JIT compiler and I\'ve been surprised to discover that so many of the x86-64 registers are nonvolatile (callee-preserved) in the Win64 calling convention.
The advantage of having nonvolatile registers is: performance.
nonvolatile
The less data is moved, the more efficient a CPU is.
The more volatile registers, the more energy does the CPU need.
volatile