我如何从 C 程序中获取汇编代码我使用了这个 recommendation
我在 Eclipse 中使用了类似 -c -fmessage-length=0 -O2 -S 的东西,但是我遇到了一个错误,提前感谢您的帮助

现在我有这个错误

   atam.c:11: error: conflicting types for 'select'
/usr/include/sys/select.h:112: error: previous declaration of 'select' was here
atam.c:11: error: conflicting types for 'select'
/usr/include/sys/select.h:112: error: previous declaration of 'select' was here

这是我的功能
int select(int board[],int length,int search){
    int left=0, right=length-1;

    while(1){
        int pivot_index=(right+left)/2;
        int ordered_pivot=partition(board,left,right,pivot_index);

        if(ordered_pivot==search){
            return board[ordered_pivot];
        }
        else if(search<ordered_pivot){
            right=ordered_pivot-1;
        }
        else{
            left=ordered_pivot+1;
        }
    }
}

最佳答案

Eclipse 仍将输出视为目标文件

gcc -O0 -g3 -Wall -c -fmessage-length=0 -O2 -S -oatam.o ..\atam.c

正在生成您想要的程序集,但由于将 atam.o 传递给 GCC(通常您会将程序集存储在 -oatam.o 中),因此将其存储在 atam.s 中会令人困惑。下一个命令:
gcc -oatam.exe atam.o

尝试链接 atam.o 并生成可执行文件,但 atam.o 是汇编源代码,而不是目标文件,因此链接器失败。您需要告诉 eclipse 不要运行第二个命令(并且您可能想要更改第一个的输出文件名)

关于c - 从 C 到汇编,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2889837/

10-11 18:45