目录:
定义-非易失性寄存器是什么意思?
非易失性寄存器是一种寄存器,其内容必须通过子例程调用保留。 每当例程更改非易失性寄存器的值时,就必须在更改寄存器之前将旧值保存在堆栈中,并且必须在返回之前恢复该值。 寄存器类似于变量,不同之处在于寄存器的数量是固定的。 每个寄存器都是CPU中唯一保存一个值的唯一位置。 寄存器是唯一可以执行数学功能(例如加法,乘法,减法等)的地方。 寄存器通常包含指向内存的指针。 在存储器和寄存器之间移动值是一种常见现象。
技术百科解释了非易失性寄存器
以下是非易失性寄存器的一些示例:
- ebx :用于一般目的的非易失性寄存器。 通常通过一个函数将其设置为一个公共值,以加快计算速度。
- esi :用于一般目的的非易失性寄存器。 它通常用作指针,尤其是对于需要数据源和目标的“ rep-”类指令。 在这里,esi指向源。 一个esi通常保存所有通过函数使用的数据,因为它不容易更改。
- edi :另一个用于通用的非易失性寄存器。 这通常用作指针。 edi与esi相同,除了它通常指向目的地。
- ebp :另一个用作通用寄存器的非易失性寄存器。 根据编译设置,它有两个独特的用途。 它可以是通用寄存器或帧指针。 如果编译尚未优化或代码是手工编写的,则ebp会在函数开始时监视堆栈的位置。 由于堆栈是通过函数全部更改的,因此当将ebp设置为原始值时,可以轻松地引用保存在堆栈上的变量。 如果优化了编译,则ebp将用作通用寄存器来存储任何类型的数据,而堆栈指针的计算取决于其移动。
