【问题标题】:How Can I Aware Register Spilling via Objdump File?如何通过 Objdump 文件知道寄存器溢出?
【发布时间】:2017-02-01 02:05:54
【问题描述】:

如何通过查看 objdump 文件来了解寄存器溢出? 我的想法是它可以通过跟踪堆栈指针来完成:将sp 移动到函数序言和结尾之外,表示寄存器溢出。

我想知道哪些代码行造成寄存器溢出。另外,恢复的寄存器在哪里指向全局变量,也是堆栈?

【问题讨论】:

    标签: optimization compiler-construction cpu-architecture


    【解决方案1】:

    寄存器溢出不需要移动堆栈指针,局部变量可能会溢出到堆栈并在当前帧中直接从那里直接使用,编译器将只使用堆栈帧及其偏移量而不是一个寄存器。

    您最好的选择就是寻找不断被读取和/或写入的内存地址。这甚至可能发生在由于编译器缺陷导致周围有可用寄存器的情况下,或者无法证明没有其他线程/代码单元正在通过 addr 访问某个局部变量(例如,如果变量地址被复制到超出范围的某个地方)。在这种情况下,需要在内存中维护该变量。

    【讨论】:

      猜你喜欢
      • 2018-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      相关资源
      最近更新 更多