Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GCC MIPS后端如何处理零寄存器?_Gcc_Compiler Construction - Fatal编程技术网

GCC MIPS后端如何处理零寄存器?

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

我注意到MIPS有一个零寄存器(内置在硬件中,连接到零)。MIPS ABI通过r0引用零寄存器

我正在向GCC添加一个新的测试后端,并希望有两个这样的寄存器——一个硬连接到零,另一个硬连接到1。现在要添加另一个硬连线到1的寄存器,我想解释一下编译器对零寄存器的处理

我的问题是GCC如何“使用”编译工作流中所有步骤的零寄存器,在GCC的所有过程中,在什么情况下使用这些知识


它只是RTL生成过程(将零常量映射到零_寄存器)还是有更多的过程?我的理解是,它应该不止于此(在阅读了拥有零寄存器的目的之后)

BEQ和BNE可以使用此寄存器与0进行比较。此外,更改符号(如
-a
)可以通过从该寄存器中减去来完成。