[backend]添加了一个Pass,将调用者、被调用者寄存器实现转移到其中

This commit is contained in:
Lixuanwang
2025-07-26 18:38:04 +08:00
parent 8ae7478ef3
commit 540742be0c
7 changed files with 142 additions and 57 deletions

View File

@@ -31,6 +31,20 @@ public:
};
/**
* @class CalleeSavedHandler
* @brief 处理被调用者保存寄存器(Callee-Saved Registers)的Pass。
* * 这个Pass在寄存器分配之后运行。它的主要职责是
* 1. 扫描整个函数,找出所有被使用的 `s` 系列寄存器。
* 2. 在函数序言中插入 `sd` 指令来保存这些寄存器。
* 3. 在函数结尾ret指令前插入 `ld` 指令来恢复这些寄存器。
* 4. 正确计算因保存这些寄存器而需要的额外栈空间并更新StackFrameInfo。
*/
class CalleeSavedHandler : public BackendPass {
public:
void runOnMachineFunction(MachineFunction* mfunc) override;
};
// --- 寄存器分配后优化 ---
/**