最近,我正在尝试使用 gcc 为 n64 编写一些实用程序,但它的优化策略存在一些问题。
请考虑以下示例:
// cctest.c
extern struct {
float x;
float y;
float z;
} var;
void *test() {
float t;
t = 5.0;
var.x = var.x + t;
var.y = 10.0;
var.z = 60.0;
return (void*)&var;
}
Run Code Online (Sandbox Code Playgroud)
我的 except 输出类似于:
lui $2, %hi(var)
lui $1, 0x40A0
addiu $2,$2,%lo(var)
mtc1 $1, $f2
lwc1 $f0, 0x0($2)
lui $3, 0x4120
lui $4, 0x4270
sw $3, 0x4($2)
add.s $f0, $f0, $f2
sw $4, 0x8($2)
jr $31
swc1 $f0, 0x0($2)
Run Code Online (Sandbox Code Playgroud)
然而,编译器生成: …