Kol*_*dez 2 c x86 assembly gcc
我有以下 C 文件
int foo (int input)
{
if (input == 0)
input = 1;
return input;
}
Run Code Online (Sandbox Code Playgroud)
当我使用创建目标文件时gcc foo.c -m32 -Wa,-march=i486 -c,一切都很顺利。但是,当我-O3在命令中添加 a 时,出现以下错误:
/tmp/cc7br7gY.s: Assembler messages:
/tmp/cc7br7gY.s:12: Error: `cmove' is not supported on `i486'
Run Code Online (Sandbox Code Playgroud)
我是否必须为汇编优化器提供一个附加选项来告诉它我想要在 i486 上运行的指令?
gcc --version输出gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0。
您并没有告诉编译器编译到架构,只是告诉汇编器(我不太确定您需要这样做)。
-m32 -march=i486如果您想要这样做,请传递一个平原(或根据需要使用任何其他拱门)。