如何防止“gcc -O3”产生过于现代的 x86 指令?

问题描述 投票:0回答:1

我有以下C文件

int foo (int input)
{
    if (input == 0)
        input = 1;
    
    return input;
}

当我使用

gcc foo.c -m32 -Wa,-march=i486 -c
创建目标文件时,一切顺利。但是,当我在命令中添加
-O3
时,出现以下错误:

/tmp/cc7br7gY.s: Assembler messages:
/tmp/cc7br7gY.s:12: Error: `cmove' is not supported on `i486'

我是否必须为汇编优化器提供一个额外的选项来告诉它我想要在 i486 上工作的指令?

gcc --version
输出
gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0
.

c assembly gcc x86
1个回答
1
投票

你不是在告诉编译器编译到 arch,只是告诉汇编器(我不确定你需要这样做)。

传递一个普通的

-m32 -march=i486
如果这是你想做的(或使用任何其他arch你需要)。

© www.soinside.com 2019 - 2024. All rights reserved.