A register can be stored in the local cache, or in CPU's like the X86 or X86-64, they are stored in what is called a Register File, though it depends on the architecture of the processor. But I believe most embedded processors and microprocessors just use the local cache, as they often have high register counts (128, 256, 512 or more!). But it has been many years since I've read a hardware doc on an embedded microprocessor. A common optimization of registers is called Register Renaming, as it allows the execution pipe to execute instructions out-of-order, which leads to dual, triple, and quad-piping instructions! Quad-Piping is the main reason why the old AMD Barton processors could out-perform the Intels at the time, even though the Intels were much higher clocked!
A Register is pretty much what you think it is, a small amount of data that the CPU was working on, is currently working on, or is about to work on.
As for System Calls, old 386/486 processors needed to place the API call #ID into the EAX register and then Interrupt the CPU. This was a slow way of going about it, so I think in the 686 era Intel and AMD came up with two new instructions called SYSENTER and SYSEXIT which allows for much faster system calling without all the overhead of an Interrupt.
http://manugarg.googlepages.com/syst...nlinux2_6.html
A Register is pretty much what you think it is, a small amount of data that the CPU was working on, is currently working on, or is about to work on.
As for System Calls, old 386/486 processors needed to place the API call #ID into the EAX register and then Interrupt the CPU. This was a slow way of going about it, so I think in the 686 era Intel and AMD came up with two new instructions called SYSENTER and SYSEXIT which allows for much faster system calling without all the overhead of an Interrupt.
http://manugarg.googlepages.com/syst...nlinux2_6.html