你能告诉我从命令行编译时 cl.exe和link.exe 的__DEFAULT__隐式编译器选项是什么,如:
cl whatever.c
Run Code Online (Sandbox Code Playgroud)
谢谢!
更新:澄清:我没有参与可用的命令行选项,我甚至将它们与问题联系起来.我要求的是当您指定none并从命令行编译时使用的隐式命令行选项列表.
我只是通过检查编译器生成的二进制代码来学习x86 asm.
在Visual Studio 2010 beta 2中使用C++编译器编译的代码.
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16.00.21003.01 for 80x86
Run Code Online (Sandbox Code Playgroud)
int mainCRTStartup()
{
int x=5;int y=1024;
while(x) { x--; y/=2; }
return x+y;
}
Run Code Online (Sandbox Code Playgroud)
cl /c /O2 /Oy- /MD sandbox.c
link /NODEFAULTLIB /MANIFEST:NO /SUBSYSTEM:CONSOLE sandbox.obj
Run Code Online (Sandbox Code Playgroud)
以下从入口点开始.
00401000 >/$ B9 05000000 MOV ECX,5
00401005 |. B8 00040000 MOV EAX,400
0040100A |. 8D9B 00000000 LEA EBX,DWORD PTR DS:[EBX]
00401010 |> 99 /CDQ
00401011 |. 2BC2 |SUB …Run Code Online (Sandbox Code Playgroud)