Data registers can hold numeric values such as integer and, in some architectures, floating-point values, as well as characters, small bit arrays and other data.
The stack pointer is used to manage the run-time stack.