【发布时间】:2015-11-07 05:50:09
【问题描述】:
CPU寄存器可以通过调用约定分为易失性和非易失性,volatile这个词的含义是什么意思?
【问题讨论】:
标签: cpu-registers calling-convention volatility
CPU寄存器可以通过调用约定分为易失性和非易失性,volatile这个词的含义是什么意思?
【问题讨论】:
标签: cpu-registers calling-convention volatility
来自http://www.techopedia.com/definition/8591/non-volatile-register
易失性寄存器的内容可能会随着子程序调用而改变。
非易失性寄存器是一种寄存器,其内容必须在子程序调用中保留。每当例程更改非易失性寄存器的值时,必须在更改寄存器之前将旧值保存在堆栈中,并且必须在返回之前恢复该值。寄存器类似于变量,只是寄存器的数量是固定的。每个寄存器都是 CPU 中保存单个值的唯一位置。寄存器是唯一一个可以执行加法、乘法、减法等数学函数的地方。寄存器通常保存指向内存的指针。在内存和寄存器之间移动值是一种常见现象。
【讨论】:
换句话说,易失性寄存器是调用者保存的寄存器,而不是被调用者保存的寄存器。见https://docs.microsoft.com/en-us/cpp/build/x64-calling-convention?view=vs-2019#callercallee-saved-registers
【讨论】: