代码如何存储在可执行文件中?

时间:2012-09-01 23:37:50

标签: windows linux macos executable

我读到可执行文件将代码存储在不同的部分中。例如,数据的单独部分等。这是不同的平台,如Win或MacO或Linux?

对它的一些见解会非常有帮助。

2 个答案:

答案 0 :(得分:4)

你是正确的,因为可执行文件有几个部分或段:但并非所有部分或部分都是代码。

通常有一段代码 - 在ELF和PE中,这通常称为.text。存在另外的存储动态链接数据,硬编码字符串,只读数据,全局变量等

要亲自看看这些,而不是维基和谷歌,请尝试一下:

在Windows中:你有一个名为DUMPBIN.EXE的工具,它是visual studio的一部分。如果你无法掌握,请使用Dependency Walker(可免费下载)。这将解析PE和PE32 +(即64位)文件

在Linux中:对于ELF文件,使用objdump -x或readelf(两者几乎相同,但选项略有不同)。

在Mac中:使用otool -l查看Mach-O文件中的加载命令(显示部分和段)。

使用其中一种或全部工具可以让您更好地了解工作原理。

希望这有帮助,

TG

答案 1 :(得分:2)

Windows使用Portable Executable格式。

* nix通常使用可执行文件和可链接格式。以前有些人使用过SOM,a.out,ECOFF,XCOFF,COFF和其他一些。

OS X和iOS(以及NeXT,历史粉丝)使用Mach-O。

PowerPC系统仍支持首选可执行格式,该格式与早期的Mac OS和某些形式的BeOS一起使用。

可能以http://en.wikipedia.org/wiki/Comparison_of_executable_file_formats

开头