我如何从 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/