rbp is the frame pointer on x86_64
it gets a snapshot of the stack pointer rsp
when adjustments are made to rsp
i.e. reserving space forlocal variables or pushing values on to the stack
local variables and function parameters are still accessible from a constant offset from rbp.
A lot of compilers offer frame pointer omission as an optimization option;
this will make the generated assembly code access variables relative to rsp instead
and free up rbp as another general purpose register forusein functions.