寄存器分配图着色_compiler-construction – 图形着色寄存器分配器

对于我的编译器课程,我正在构建一个基于MIPS架构的图着色的寄存器分配器.我正在遵循Muchnick对我的实施的同样的待遇.

关于如何在这些分配器中处理函数的参数,Muchnick有点模糊.

我做了一些假设,并认为我会澄清相同的.

>从中级IR转换到较低级IR是这一步.尚未处理嵌套函数调用.我的想法是从右到左扫描函数调用,并向外放置最内层调用的IR.通过这种方式,我可以使用MIPS调用约定,将前几个参数分配给参数寄存器,剩余部分以最小量的溢出(仅1)进行堆叠.

>本书中的寄存器合并处理对我来说并不直观,因为它没有解决如何处理移动函数参数到固定参数寄存器的LIR代码.经过深思熟虑后,我得出的结论是,我不应该为参数传递动作注册合并.

对这些假设的反馈/想法非常受欢迎.

最佳答案 我认为您不希望在寄存器分配之前将参数传递从虚拟寄存器到参数寄存器的参数传递从函数调用实际参数(或者,对于函数调用复制的函数调用形式参数,反之亦然)进行寄存器合并.

但是,当您看到此类移动时,您可以向分配器标记提示,即移动目标参数寄存器是首选.当首选项没有适当干扰*时,您可以将其用于分配,结果是在分配后您将有一个移动rx,rx,您可以在以后轻松消除.

(当然,你可能会发现不止一个这样的提示,所以你选择最适合的一个,大多数(通常是所有)它们将被排除在其他干扰之外:同一个寄存器传递给多个呼叫;在一个循环中调用,等等..)

(*恰当地表示在虚拟寄存器的生命周期内,参数(实际)寄存器不会被其他方式使用或删除,例如通过嵌套函数调用或其他方式.(识别这可能就像检查虚拟干扰一样简单)寄存器.))

这个错误信息表明CMake在尝试配置项目时没有找到有效的C编译器。CMake是一个跨平台的自动化构建系统,它依赖于环境中的编译器来编译和链接代码。错误中的"CMAKE_C_COMPILER-NOTFOUND"指的是CMake配置过程中指定的C编译器路径没有找到。 为了解决这个问题,你可以按照以下步骤操作: 1. 确认你的系统上是否已经安装了C编译器。常用的C编译器有GCC(GNU Compiler Collection)和Clang等。 2. 如果已经安装了编译器,请检查编译器的安装路径,并确保它在系统的PATH环境变量中,或者在CMake的配置过程中明确指定编译器的完整路径。 3. 在运行CMake命令之前,你可以通过设置环境变量来指定编译器,例如在Unix-like系统中可以使用如下命令: ``` export CC=<编译器路径>/gcc ``` 或者在Windows系统的命令行中使用如下命令: ``` set CC=<编译器路径>\gcc.exe ``` 这里的`<编译器路径>`是编译器可执行文件所在的具体目录。 4. 如果你是在CMake GUI中进行配置,可以在配置界面中指定编译器的路径。 5. 另外,也可以在CMake命令行中使用`-D`选项来直接指定C编译器,例如: ``` cmake -DCMAKE_C_COMPILER=<编译器路径>/gcc .. ``` 或者 ``` cmake -DCMAKE_C_COMPILER=<编译器路径>\gcc.exe .. ``` 6. 如果你的系统中没有安装C编译器,你需要先安装一个。在Linux系统中,通常可以通过包管理器安装GCC,而在Windows上,可以选择安装MinGW或者其他C/C++工具链。 通过上述步骤,你应该能够解决CMake找不到C编译器的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值