4个回答
2013-12-13
展开全部
不是汇编输出,更不是机器代码,而是链接器输出
当然不是机器代码,否则这个程序就可以在无操作系统环境下跑,或是在windows下编译出的exe能够在unix上跑,这当然是不对的。
(当然有直接生成机器码的编译器,不过不是我们常见的)
实际上编译出的程序是操作系统相关的,那是因为不同的操作系统的函数库是不相同的。编译器就是将程序与操作系统的函数库链接(比如屏幕的显示,键盘的输入等)。当然只会有少量机器码。
当然不是机器代码,否则这个程序就可以在无操作系统环境下跑,或是在windows下编译出的exe能够在unix上跑,这当然是不对的。
(当然有直接生成机器码的编译器,不过不是我们常见的)
实际上编译出的程序是操作系统相关的,那是因为不同的操作系统的函数库是不相同的。编译器就是将程序与操作系统的函数库链接(比如屏幕的显示,键盘的输入等)。当然只会有少量机器码。
展开全部
和编译器有关,不同编译器可能不同,不同的编译操作也可能不同。
vc++基本上会生成 汇编(一般只在内存出现,只有出错或启用查看汇编时才能看到)
再由汇编器 把生成的汇编 编译成 目标文件(.obj)
再链接成可执行文件或库文件(.exe .lib .dll)
但是如果是托管代码 可能生成的就是 msdl(微软中间语言)代码
然后运行在 clr(公共语言运行时) 里。
vc++基本上会生成 汇编(一般只在内存出现,只有出错或启用查看汇编时才能看到)
再由汇编器 把生成的汇编 编译成 目标文件(.obj)
再链接成可执行文件或库文件(.exe .lib .dll)
但是如果是托管代码 可能生成的就是 msdl(微软中间语言)代码
然后运行在 clr(公共语言运行时) 里。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不会是这两种语言代码,而是编译后直接生成二进制文件(.OBJ文件),再通过连接器链接成二进制文件(.EXE/.DLL/.OCX/.SYS等)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询