+ -
当前位置:首页 → 问答吧 → 关于汇编语言生成的代码问题

关于汇编语言生成的代码问题

时间:2011-09-03

来源:互联网

同样的汇编程序在不同的操作系统中生成的代码相同吗?
我的理解是:
应该是不相同的,虽然说汇编语言是底层的,反映指令的.编译器还是会在程序中添加一些可以在该操作系统中运行的相关信息,代码.这是由编译器决定的.
这样想对吗?

作者: bluesea147   发布时间: 2011-09-03

不同的汇编编译器的语法是不一样的。你说的那个添加一些东西对应的东西叫文件结构。不同的操作系统使用的可执行文件的文件结构是不一样的。就是单独的一个操作系统也会使用多种可执行文件,比如windows主要就有exe和dll两种可执行文件。另外同样是exe文件,内部的结构也可能是不同的。比如32位的 windows exe 到了16位的 dos 就不行了。一般的编译器都能生成多种类型的文件,以适应不同的应用和系统。不过masm应该是只能生成在windows里运行的程序。
但如果对应的CPU相同的话,不同的编译器生成的最终文件的指令部分应该是差不多的,但这个基本是不可能出现的,因为不同的编译器的语言是不一样的,所以做不到相同的汇编程序能被不同的编译器编译。
还有你的问题有毛病,汇编源代码不是在操作系统中变成可执行文件的,是用编译器生成可执行文件的。

作者: MHBBCRCPJ   发布时间: 2011-09-03

1楼说的对呀,汇编语言是基于操作系统的.使用同种型号的cpu但是不同的操作系统下生成的代码不尽相同.

作者: zhuzhucong   发布时间: 2011-09-03