编译二进制的奥秘
1. C源程序经编译形成的二进制代码可以直接运行吗
不可以直接运行,源程序是程序员写给人看的,电脑执行的都是.EXE程序或者是二进制可执行代码,所以得将源程序进行编译连接然后才能生成可执行的程序也就是二进制的代码。
源代码(也称源程序)是指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令。
在现代程序语言中,源代码可以是以书籍或者磁带的形式出现,但最为常用的格式是文本文件,这种典型格式的目的是为了编译出计算机程序。
计算机源代码的最终目的是将人类可读的文本翻译成为计算机可以执行的二进制指令,这种过程叫做编译,通过编译器完成。
(1)编译二进制的奥秘扩展阅读:
如果按照源代码类型区分软件,通常被分为两类:自由软件和非自由软件。自由软件一般是不仅可以免费得到,而且公开源代码;相对应地,非自由软件则是不公开源代码。所有一切通过非正常手段获得非自由软件源代码的行为都将被视为非法。
对于计算机而言,并不存在真正意义上的“好”的源代码;然而作为一个人,好的书写习惯茄蚂将决定源代码的好坏。源代码是否具有可读性,成为好坏的重要标准。软件文档则是表明可读性的关键。
对软件进行说明,即对软件的编写进行说明。为数不少的初学者,甚至少数有经验的程序员都颤键埋忽视软件说明的编写,因为这部分不会在生成的程序中直接显示,也不参与编译。
但是亮悔注释代码对软件的学习、分享、维护和软件复用都有巨大的好处。因此,书写软件说明在业界被认为是能创造优秀程序的良好习惯,一些公司也硬性规定必须书写。
网络-源代码 (一系列人类可读的计算机语言指令)
2. 计算机翻译程序如何把一个面向人看懂的语句组成程序变成计算机可执行的二进制代码的过程
计算机程序语言主要有两类,一种是脚本语言,另一种是需通过编译的语言。
脚本语言通过解释执行。编译语言通过编译器翻译后执行。
在纸上写好人看懂的语句组成的程序,当然是按脚本语言或编译语言的语法规定写的。
用编辑器,例如notepad,从键盘打进去,存成磁盘文件。
解释器,边读程序,边解释,边执行。例如,浏览器处理HTML网页,Shell处理“批”文件。
编译语言,由编译器读入全部程序,然后做词法分析,句法分析,语法分析,逻辑结构分析,按语句顺序及程序内容规定的条件转移次序,翻译成数据和指令码,链接嵌入必要的库的代码,作优化后把可执行码(二进制代码)存回磁盘。最后用户运行可执行码。例如,vb,vc程序。
3. python如何编译生成二进制文件
1、可以
2、当你编辑运行py文件后,就会生成对应文件名的pyc文件。
3、pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的,这个是类似于java或者.NET的虚拟机的概念。pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的。
总之,是可以的
4. 信息如何编译成数字信号数字信号如何转换成二进制
具体过程是采样样、量化和编码。
1)采样
又称为抽样,是利用采样脉冲序列p(t),从连续时间信号x(t)中抽取一系列离散样值,使之成为采样信号x(nTs)的过程。n= 0,1…。Ts称为采样间隔,或采样周期,1/Ts = fs 称为采样频率。
由于后续的量化过程需要一定的时间τ,对于随时间变化的模拟输入信号,要求瞬时采样值在时间τ内保持不变,这样才能保证转换的正确性和转换精度,这个过程就是采样保持。正是有了采样保持,实际上采样后的信号是阶梯形的连续函数。
2)量化
又称幅值量化,把采样信号x(nTs)经过舍入或截尾的方法变为只有有限个有效数字的数,这一过程称为量化。
若取信号x(t)可能出现的最大值A,令其分为D个间隔,则每个间隔长度为R=A/D,R称为量化增量或量化步长。当采样信号x(nTs)落在某一小间隔内,经过舍入或截尾方法而变为有限值时,则产生量化误差,如上图所示。
一般又把量化误差看成是模拟信号作数字处理时的可加噪声,故而又称之为舍入噪声或截尾噪声。量化增量D愈大,则量化误差愈大,量化增量大小,一般取决于计算机A/D卡的位数。例如,8位二进制为28=256,即量化电平R为所测信号最大电压幅值的1/256。
3、编码
抽样、量化后的信号还不是数字信号,需要把它转换成数字编码脉冲,这一过程称为编码。 最简单的编码方式是二进制编码。如果量化后有8个值,我们就可以用二进制这样编码 000 001 010 011 100 101 110 111 这8个二进制就表示8个不同的值。
上面试论解释,形象的解释比如一根绳子上面穿满了珠子(项链),这个绳子就是你的信息,而珠子就是你经过抽样量化后的信息,至于编码按照珠子的多少,2的n方编就可以了
5. C/C++语言编译生产可执行的二进制文件的过程求大神详尽解释,
预编译。编译器将你的.c、.cpp源代码,通过解释其中的预编译指令,将源代码转换成相应的没有任何预编译指令的代码。
编译、优化。将上一步的代码编译成汇编指令,并作一定优化,形成对应的.s汇编代码
汇编。将.s文件汇编成机器码,形成对应的.o目标文件,此时是不可执行的二进制文件。生成对应的清单文件。为了连接需要,还会生成未定向符号表、导出符号表、地址重定向表等等。
连接。先根据对应的清单文件、连接文件及之间的调用关系,决定所有的目标文件及引用的库文件在最后可执行文件中的位置;然后做一些其他事情,比如根据符号表等将目标文件中的符号地址补全等等;最终得到可执行文件。
这只是我个人的简单理解,更详尽的解答都可以写成好几本书了=_=望采纳~
6. 如何编译android 可执行的二进制文件
Android由于其代码是放在dalvik虚拟机上的托管代码,所以能够很容易的将其反编译为我们可以识别的代码。 之前我写过一篇文章反编译Android的apk包到smali文件 然后再重新编译签名后打包实现篡改apk的功能。 最近又有一种新的方法来实现直接从Android apk包里的classes.dex文件,把dex码反编译到java的.class二进制码,然后从.class二进制码反编译到java源码想必就不用我来多说了吧。 首先我们需要的工具是dex2jar和jd-gui 其中第一个工具dex2jar是用来把classex.dex文件也就是dex二进制码转化为java的标准.class二进制码,然后jd-gui是把标准的.class二进制码再反编译为java源码。 首先从apk包里面提取出classes.dex 放到dex2jar目录下 然后在命令行下执行 dex2jar.bat classes.dex 这时执行成功后会生成一个classes.dex.dex2jar.jar文件 这个文件再用jd-gui打开,如下图 几乎跟我自己写的这个程序的源码一样 提供这个反编译方法主要用于大家学习与研究,有问题可以与我邮件讨论。 希望大家不要用这个方法从事恶意的活动,毕竟,别人辛辛苦苦写程序也不容易,用这个方法可以大致的学习到别人写的程序的逻辑,架构,希望对大家有所帮助。 Android 逆向apk程序的心得 本文主要介绍如何逆向一个Android的APK应用程序,本文提供的方法仅供研究学习之用。 本文需要用到的工具有 jdk 这个用于搭建java运行环境 AXMLPrinter2.jar 这个用于逆向.xml文件 baksmali.jar 这个用于逆向classex.dex文件 由于Android的.apk文件实际上就是一个zip文件 可以直接用winrar打开
7. 二进制如何编程
1、打开易语言新建一个windows程序进入下图界面。
8. 如何将一个函数编译成二进制文件
通过下面这条命令,main.c和swap.c 就产生了一个可执行二进制文件swap
》gcc mian.c swap.c -o swap
那么这条命令是么样把源程序变成可执行程序的呢?
步骤如下:
1、驱动程序首先调用C预处理器(CPP)把源文件翻译成一个ASCII中间文件mian.i,预处理器会把#include所包含的内容都插入到声明的位置,并且做宏替换,把main.c 文件的第3行 的SIZE替换成2(注意这里只是做简单的文本替换)。
2、接下来驱动程序的C编译器将main.i翻译成汇编语言程序main.s
3、然后驱动程序的汇编器将汇编语言程序main.s 翻译成可重定位的二进制文件main.o
4、最后运行链接器将main.o 与swap.o 以及一些必要的系统目标文件(比如你将调用的printf函数就是printf.o)连接起来变成一个可执行的二进制文件。