GCC MIPS后端如何处理零寄存器?
我注意到MIPS有一个零寄存器(内置在硬件中,连接到零)。MIPS ABI通过r0引用零寄存器 我正在向GCC添加一个新的测试后端,并希望有两个这样的寄存器——一个硬连接到零,另一个硬连接到1。现在要添加另一个硬连线到1的寄存器,我想解释一下编译器对零寄存器的处理 我的问题是GCC如何“使用”编译工作流中所有步骤的零寄存器,在GCC的所有过程中,在什么情况下使用这些知识GCC MIPS后端如何处理零寄存器?,gcc,compiler-construction,Gcc,Compiler Construction,我注意到MIPS有一个零寄存器(内置在硬件中,连接到零)。MIPS ABI通过r0引用零寄存器 我正在向GCC添加一个新的测试后端,并希望有两个这样的寄存器——一个硬连接到零,另一个硬连接到1。现在要添加另一个硬连线到1的寄存器,我想解释一下编译器对零寄存器的处理 我的问题是GCC如何“使用”编译工作流中所有步骤的零寄存器,在GCC的所有过程中,在什么情况下使用这些知识 它只是RTL生成过程(将零常量映射到零_寄存器)还是有更多的过程?我的理解是,它应该不止于此(在阅读了拥有零寄存器的目的之后)
它只是RTL生成过程(将零常量映射到零_寄存器)还是有更多的过程?我的理解是,它应该不止于此(在阅读了拥有零寄存器的目的之后)BEQ和BNE可以使用此寄存器与0进行比较。此外,更改符号(如
-a
)可以通过从该寄存器中减去来完成。