【问题标题】:How to understand volatile and non-volatile registers?如何理解易失性和非易失性寄存器?
【发布时间】:2015-11-07 05:50:09
【问题描述】:

CPU寄存器可以通过调用约定分为易失性和非易失性,volatile这个词的含义是什么意思?

【问题讨论】:

    标签: cpu-registers calling-convention volatility


    【解决方案1】:

    来自http://www.techopedia.com/definition/8591/non-volatile-register

    易失性寄存器的内容可能会随着子程序调用而改变。

    非易失性寄存器是一种寄存器,其内容必须在子程序调用中保留。每当例程更改非易失性寄存器的值时,必须在更改寄存器之前将旧值保存在堆栈中,并且必须在返回之前恢复该值。寄存器类似于变量,只是寄存器的数量是固定的。每个寄存器都是 CPU 中保存单个值的唯一位置。寄存器是唯一一个可以执行加法、乘法、减法等数学函数的地方。寄存器通常保存指向内存的指针。在内存和寄存器之间移动值是一种常见现象。

    【讨论】:

    • 我从来不知道CPU内部有易失性和非易失性寄存器,它是做什么用的?哪个 CPU 有它?
    • 在计算机体系结构中,处理器寄存器是一种非常快速的计算机内存,用于通过提供对常用值的快速访问来加速计算机程序的执行——通常,这些值在计算过程中给定的时间点。所有 CPU 都有这些寄存器。
    【解决方案2】:

    换句话说,易失性寄存器是调用者保存的寄存器,而不是被调用者保存的寄存器。见https://docs.microsoft.com/en-us/cpp/build/x64-calling-convention?view=vs-2019#callercallee-saved-registers

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-18
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2010-12-19
      • 1970-01-01
      • 2023-02-10
      相关资源
      最近更新 更多