`
jiq408694711
  • 浏览: 36605 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

浅谈从源代码文件到二进制可执行文件的过程

 
阅读更多

=== .c ===

预处理 -》.c (源文件)

编译-》.s/asm (汇编程序)

汇编-》.o/obj 目标程序(二进制文件)

链接-》.exe可执行程序 (二进制文件)

(1) 为什么要生成汇编,而不是直接从源文件编译成机器指令(二进制代码)?

首先,汇编语言作为机器指令的助记符,调试以及优化起来都会比较方便;

其次,汇编到机器指令的过程是由硬件完成的,是一个自动过程,让硬件来完成效率较高;

最后,如果要将源文件直接转换成机器指令,那么编译器编写者就必须要非常数量机器码,这是一个比较困难且低效的过程。

(2) 详细解释从源文件经过编译成为汇编语言的过程?

词法分析(Token),语法分析(syntax tree),语义分析,优化,代码生成。

=== .java ===

java编译器将源文件编译成.class文件(平台无关)

JVM的Class Loader负责将class文件加载到JVM中

利用Windows/Linux下的字节码解释程序,将class文件解释成机器指令(机器指令是CPU能直接识别并执行的指令,它的表现形式是二进制编码。机器指令通常由操作码操作数两部分组成)。没有转换成汇编语言的过程

(1) 为什么引入class文件?

class文件径打破了C或者C++等语言所遵循的传统,使用这些传统语言写的程序通常首先被编译,然后被链接成单独的、专门支持特定硬件平台和操作系统的二进制文件。通常情况下,一个平台上的二进制可执行文件不能在其他平台上工作。而Java class文件是可以运行在任何支持java虚拟机的硬件平台和操作系统上的二进制文件。

分享到:
评论

相关推荐

    minio 二进制可执行文件

    minio 二进制可执行文件

    C++文件转二进制,二进制转文件

    这个过程涉及到读取文件内容并将其存储为二进制数据,以及从二进制数据中恢复原始文件。在VS2010环境下,我们可以使用C++的标准库`<fstream>`来完成这一操作。以下是对这个主题的详细解释: 首先,让我们了解什么是...

    NetBeans 源代码和二进制构建文件

    二进制构建文件则是源代码经过编译和链接过程生成的可执行文件或库文件,可以直接在操作系统上运行。 描述中的“netbeans-6.0.1-200801291616-ml-javase”是NetBeans的一个特定版本号,这里指的是6.0.1版。版本号...

    minio 二进制可执行文件(linux)

    minio 的二进制 可执行文件,适用于linux系统,加权限带参数执行即可

    在Android中调用二进制可执行程序

    Android基于Linux内核构建,因此支持许多与Linux相似的功能,比如可以运行二进制可执行文件。但是,由于Android自身的特性(如应用程序的安全沙箱、资源管理机制等),直接在Android上运行二进制文件与在普通Linux...

    文本文件转换二进制文件

    此外,某些程序或系统可能只能处理二进制格式,如编译器处理源代码时,会将文本源代码转换为二进制可执行文件。 4. **转换过程**:转换文本文件到二进制文件的基本步骤如下: - 首先,读取文本文件的每个字符,并...

    文本文件与二进制文件

    二进制文件的存取过程则是读取文件的二进制比特流,然后按照应用程序指定的解码方式来解释这个流,最后将解释结果显示出来。 在编程方面,文本文件和二进制文件的处理方式相同,即按照既定的编码方式来解释和译码。...

    hex文件转二进制工具

    压缩包子文件的文件名称“HEXתBIN.exe”暗示这可能是一个Windows操作系统下的可执行文件,它的功能就是执行HEX到二进制的转换操作。用户只需运行这个程序,并提供输入的HEX文件路径和输出的二进制文件路径,就可以...

    VS文件与二进制相互转换

    文件通常有特定的扩展名,如.txt(文本文件)、.jpg(图像文件)或.exe(可执行文件),这些扩展名决定了文件的内容类型和处理方式。 二进制,即二进制数字系统,是计算机内部处理所有信息的基础。所有数据,无论其...

    二进制文件的读写,当前时间写入到dat文件中,可以读入读出.C#源代码

    在C#编程中,二进制文件的读写是一项基础且重要的操作,它涉及到计算机内存与硬盘之间的数据交互。本文将深入探讨如何使用C#进行二进制文件的读写,以及如何将当前时间写入到.dat文件中,并能够正确读取出来。 首先...

    将文件上传、下载(以二进制流保存到数据库)实现代码

    在讨论如何将文件上传、下载并以二进制流的方式保存到数据库中时,首先需要了解几个关键概念:文件上传、文件下载、二进制流以及数据库操作。 文件上传通常指的是将本地或者网络上的文件通过网络上传到服务器。在...

    提取文件的二进制码软件

    “GetFileCode.exe”这个文件名暗示这是一个可执行文件,通常用于Windows操作系统。它是提取二进制码软件的一部分,可能包含了实现文件二进制码提取功能的程序代码。运行这个exe文件,用户就能按照软件的界面提示,...

    处理二进制文件源代码

    总结,处理二进制文件是软件开发中的重要技能,涵盖了从基本的文件操作到复杂的格式解析。理解文件结构,正确地读写数据,以及处理可能的异常,都是有效处理二进制文件的关键。提供的源代码示例仅作为基础操作,实际...

    还原文件为二进制数据

    第一个文件是一个可执行程序,可能是实现这个二进制还原功能的应用。第二个文件“还原文件为二进制代码改进.c”则是一个C语言源代码文件,很可能包含了实现二进制还原功能的算法和逻辑。 C语言是一种底层编程语言,...

    将二进制文件转换为16进制

    二进制文件(bin文件)通常包含机器可读的原始字节流,而十六进制文件则是二进制数据的一种人类可读的表示方式。本文将深入探讨如何将二进制文件转换为十六进制,并介绍相关编程实践。 首先,我们要理解二进制和...

    java 将文件中二进制文件转换成文本文本文件并输出

    在Java编程语言中,将二进制文件转换为文本文档通常涉及到字符编码的理解和处理。二进制文件可以包含任何类型的数据,如图像、音频、视频或纯文本,但以非可读格式存储。而文本文档通常使用特定的字符编码(如ASCII...

    3维数据stl文件从文本格式转换到二进制格式

    转换STL文件从文本格式到二进制格式通常涉及到以下步骤: 1. **读取文本文件**:程序首先读取ASCII格式的STL文件,逐行解析出三角面片的正常向量和顶点坐标。 2. **数据转换**:将解析出的浮点数转换为二进制表示...

    二进制文件

    - 可执行文件:包含机器语言代码,由操作系统加载并执行。例如Windows下的.exe或Linux下的.out。 - 图像文件:如JPEG、PNG、BMP等,存储像素数据和颜色信息,用于显示图像。 - 音频文件:如MP3、WAV、AAC等,存储...

    任意文件转C语言数组 二进制BIN文件、图片转数组

    这样,二进制文件就以数据的形式被“内联”到C代码中,编译后形成可执行文件的一部分。 图片转数组的过程与之类似,但需要考虑到图片的格式。常见的图片格式如JPEG、PNG、BMP等,它们都是二进制文件,包含了图片的...

Global site tag (gtag.js) - Google Analytics