精华内容
下载资源
问答
  • 1)简述编译程序与翻译程序、汇编程序的联系与区别。  翻译程序指把高级语言源程序翻译成机器语言源程序(目标代码)的软件。翻译程序有两种:一种是编译程序,它将高级语言源程序一次性全部翻译成目标程序,每次...

    1)简述编译程序与翻译程序、汇编程序的联系与区别。

      翻译程序指把高级语言源程序翻译成机器语言源程序(目标代码)的软件。翻译程序有两种:一种是编译程序,它将高级语言源程序一次性全部翻译成目标程序,每次执行程序时,只要执行目标程序。另一种是解释程序,它的执行过程是翻译一句执行一句,并且不会生成目标程序。

    编译程序是先完整编译后运行的程序,如C、C++等;解释程序是一句一句翻译且边翻译边执行的程序,如JavaScript、Python等。如图

     

     

      汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译成机器语言程序。

      编译程序汇编程序的区别:如果源语言是诸如C、C++、Java等“高级语言”,而目标语言是诸如汇编语言或机器语言之类的“低级语言”,这样的一个翻译程序称为编译程序。如果源语言是汇编语言,而目标语言是机器语言,这样的一个翻译程序称为汇编程序。

     

    2)编译过程包括哪几个主要阶段及每个阶段的主要功能。

      编译阶段也常常划分为两大步骤,分析步骤综合步骤 分析步骤和综合步骤 分析步骤是指对源程序的分析 -线性分析(词法分析或扫描) -层次分析(语法分析) -语义分析 综合步骤是指后端的工作,为目标程序的生成而进行的综合。

     

    3)简述解释程序与编译程序的区别。

      编译程序能生成目标程序,而解释程序不能。编译程序是整体编译完了,再一次性执行。而解释程序是一边解释,一边执行。 解释一句后就提交计算机执行一句,并不形成目标程序。就像外语翻译中的“口译”一样,说一句翻一句,不产生全文的翻译文本。编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快。而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)。

     

     4)了解新开源的华为方舟编译器(https://www.openarkcompiler.cn/home),理解并谈谈它的基本思想与采用的技术路线,以及它对安卓软件生态会有什么影响

      众所周知,搭载安卓系统的手机在经过长时间的使用之后,经常会出现使用卡顿和图像传输延后以及网络连接不畅等问题。长期以来这个问题一直没能彻底解决,方舟编译器或许是这个问题的终结者。其实,方舟编译器是华为历经多年打造出来的秘密武器,也许大家不是很了解什么是方舟翻译器,举个例子好了,当我们碰到外国人并且语言不通的时候,这个时候就需要一个中介作为翻译传递互相的信息。

      简单来说,方舟编译器就是可以将高级语言比如Java,直接编译成变成机器码的技术。它最大的优势就在于绕过了安卓系统的VM(虚拟机),从使得应用可以像苹果引以为傲的iOS系统一样,转化出的机器码可以直接由CPU运算,从而使得运行效率大大提升

       更详细的说,现在的安卓手机采用的是动态编译,在手机上进行编译,往往有部分程序需要一边转换一边执行,影响程序执行的效率。而方舟编译器是采用全新的系统及应用的编译和运行机制,对所有的 Java 语义全部做到静态编译,直接将Java 语言“翻译”成机器语言,代替高资源消耗的动态编译。所以相比起单纯的翻译机器来说,华为方舟编译器更像是让您直接获得了语言能力,对比单纯作为翻译中介,更将运行效率大幅度提升,从根本上改善安卓系统运行慢的弊端。

      根据华为实验室的测试数据,EMUI 9.1 在仅仅对系统组件 System Server 应用了华为方舟编译器后,系统操作流畅度提升 24%,系统响应性能提升 44%。同时,新浪微博极速版在应用方舟编译器之后,操作流畅度最高提升了60%。根据华为的监测数据来看,方舟编译器可以说是给安卓系统带来了一场革命性的升级变革,着实让业界侧目。

      

     

    转载于:https://www.cnblogs.com/Rakers1024/p/11457336.html

    展开全文
  • 因此,人民设计了汇编语言,用容易记忆的符号代替0,1序列,来表示机器指令中的操作码和操作数。但汇编语言是面向机器的语言,其书写格式在很大程度上取决于特定计算机的机器指令。机器语言和汇编语言被称为低级语言...

    一.低级语言和高级语言

      计算机硬件只能识别由0,1字符序列组成的机器指令,因此机器指令是最基本的计算机语言。用机器语言编制程序效率低,可读性差,也难以理解修改和维护。因此,人民设计了汇编语言,用容易记忆的符号代替0,1序列,来表示机器指令中的操作码和操作数。但汇编语言是面向机器的语言,其书写格式在很大程度上取决于特定计算机的机器指令。机器语言和汇编语言被称为低级语言。

      人们开发了功能更强,抽象级别更高的语言以支持程序设计,因此就产生了面向各类应用的程序设计语言,即高级语言,常见

    的有Java,Python,C,C++,PHP等,这类语言与人们使用的自然语言比较接近,大大提高了程序设计的效率。

    二.连接程序

      连接程序是将不同的目标文件中编辑或汇编的代码收集到一个可直接执行的文件中。

    三.汇编程序

      汇编语言是为特定计算机设计的面向机器的符号化程序设计语言。用汇编语言编写的程序称为汇编语言源程序。因为计算机不能直接识别和运行符号语言程序,所以要用专门的汇编程序进行翻译。

      汇编程序就是把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。汇编语言源程序由三类语句组成:指令语句,伪指令语句和宏指令语句。

      汇编程序一般需要扫描两次完成汇编过程:将每一条可执行汇编语句转换成对应的机器指令;处理源程序中出现的伪指令和宏指令。

    四.编译程序

    把用高级程序设计语言书写的源程序翻译成等价的计算机汇编语言或机器语言书写的目标程序的翻译程序叫编译程序。

    包括词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成,符号表管理,出错处理阶段,符号表管理和出错管理伴随整个翻译阶段。

    (1)词法分析:编译过程的第一个阶段,对源程序从前到后逐个字符扫描,从中识别出一个个“单词”符号,词法分析输出的单词常以二元组的方式输出,即单词种类和单词自身的值。

    (2)语法分析:是在词法分析的基础上,通过语法规则将单词符号序列分解成各类语法单位,判断整个输入串是否构成一个语法上正确的程序。

    (3)语义分析:包括检查源程序是否包含静态语义错误,并收集类型信息供后面的代码生成阶段使用。

    (4)出错管理:分为静态错误和动态错误。动态错误发生在程序运行时,例如变量取零作除数,引用数组元素下标越界等。静态错误指编译时发现的程序错误,分为语法错误和静态语义错误,语法错误包括单次拼写错误,标点符号错误,缺少操作数等,静态语义错误指语义分析时发现的运算符与运算对象类型不合法。

    五.解释程序

    另一种语言处理程序,在词法,语法,语义分析方面和编译程序的原理基本相同,但是在运行用户程序时,它直接执行源程序或源程序的内部形式。因此,不产生目标程序。

    效率:编译比解释高

    解释有灵活性和可移植性。

    展开全文
  • 翻译程序、汇编程序、编译程序、解释程序的区别与联系 翻译程序是指把高级语言源程序翻译成机器语言程序(目标代码) 的软件。 翻译程序有两种:一种是编译程序,它将高级语言源程序一次全部翻译成目标程序,每次...

    翻译程序、汇编程序、编译程序、解释程序的区别与联系

    先总结一下:翻译就是包括编译与解释,翻译功能就是把程序转化为同等的更低级语言;编译跟解释作用的对象就是高级语言,汇编操作对应的是汇编语言,作用是汇编成机器语言。
    更具体的大家看下面的文字,内容来自王道书的讲解。

    翻译程序是指把高级语言源程序翻译成机器语言程序(目标代码) 的软件。
    翻译程序有两种:
    一种是编译程序,它将高级语言源程序一次全部翻译成目标程序,每次执行程序时,只需执行目标程序,因此只要源程序不变,就无须重新编译,请注意同一种高级语言在不同体系结构 下,编译成目标程序是不一样的,目标程序与体系结构相关,但仍不是计算机硬件能够直接执行的程序。
    另一种是解释程序,它将源程序的一句语句翻译成对应的机器 目标代码,并立即执行,然后翻译下一条源程序语句并执行,直到所有源程序语句全部被翻译 并执行完。所以解释程序的执行过程是翻译一句执行一句并且不会生成目标程序
    汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译为机器语言程序。

    展开全文
  • 程序编译流程 预处理->编译->汇编->链接


    在程序的编译过程中,主要经过一下几个步骤:
    在这里插入图片描述
    初始程序:
    在这里插入图片描述

    1. 预处理

    预处理器(cpp)根据以字符#开头的命令,修改原始的C程序。
    比如:XXXX.c中第一行的#include<stdio.h>命令告诉预处理器读取系统头文件stdio.h的内容,并把它直接插入程序文本中,结果就得到了另一个C程序,通常是以.i作为文件扩展名。
    XXXX.i文件为:
    在这里插入图片描述
    以及后面一堆预处理展开后的代码。

    预处理名称定义
    #define宏定义,该标识符被称为宏名, 被定义的字符串称为替换文本。
    #undefine撤销已定义的宏名
    #include预处理,将另外一个源文件嵌入到带有#include的源文件中
    #if #else #elif #endif如果 #if 后面的常量表达式为 true 则编译其之后到 endif 之前的代码。否则跳过这些代码。命令 #endif 标识一个 #if 块的结束。 #else 建立另一个选择 ( 与c语言中的 if else 相似 ) , #elif 命令的意义与 else if 相同 , 可进行多种编译选择 。
    #ifdef #ifndef#ifdef和#ifndef分别表示“如果有定义”和“如果没有定义”。是条件编译的另一种手法
    #line改变当前行数和文件名称,格式:#line number [filename]
    #error在编译程序时,遇到#error就会立即生成一个错误提示信息,并停止运行
    #pragma设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。

    2. 编译

    编译器(ccl)将文本文件XXXX.i翻译成文本文件XXXX.s,它包含一个汇编语言程序。汇编语言程序中的每条语句都以一种标准的文本格式确切的描述了一条低级机器语言指令。
    在这里插入图片描述

    3. 汇编

    汇编器(as)将XXXX.s翻译成机器语言指令,把这些指令打包成一种可重定位目标程序的格式,并将结果保存在目标文件XXXX.o中。XXXX.o文件是一个二进制文件,它的字节编码是机器语言指令而不是字符,如果我们在文本文件中打开XXXX.o文件,看到的将是一堆乱码。
    在这里插入图片描述

    4. 链接

    链接器(ld)负责处理合并目标代码,生成一个可执行目标文件,可以被加载到内存中,由系统执行。

    运行结果

    展开全文
  • 编译与反汇编

    千次阅读 2015-09-30 23:08:40
    而反编译是反过来,把EXE反编译成编程源代码,也就是C程序,不过一般反编译大多数都是从机器码反编译汇编。其他语言的情况基本也是这样的。至于具体要怎么用,这个就看你的目的了。但一般情况下是通过反编译主要是...
  • 汇编程序编译与连接

    千次阅读 2018-01-12 21:37:06
    汇编程序写好后,使用汇编语言编译程序对源程序文件中的源程序进行编译,产生目标文件;再用连接程序对目标文件进行连接,生产可在操作系统中直接运行的可执行文件。 可执行文件包含两部分: 程序(从
  • C/C++程序编译流程(预处理->编译->汇编->链接)
  • 汇编程序编译过程

    千次阅读 2019-09-16 15:13:49
    汇编语言编写的源程序不能直接在其目标计算机上执行,必须通过翻译或汇编将其转换为可执行代码.汇编-链接-执行周期:编程者用文本编辑器(text editor)创建并编写一个文本文件,称之为源文件.汇编器读取源文件,并生成...
  • 写在前面:对于程序编译汇编链接过程的理解。 涉及到程序的重定位,虚拟内存,静态链接,动态链接的概念的理解。早期程序员采用的是机器语言的编写程序。非常的麻烦。 后来采用汇编语言编写,将一些操作采用符号的...
  • 编译程序

    千次阅读 2020-10-23 09:15:55
    在这一章中,我们将看一下如何通过编译源代码来创建程序。源代码的可用性是至关重要的自由,从而使得 Linux 成为可能。 整个 Linux 开发生态圈就是依赖于开发者之间的自由交流。对于许多桌面用户来说,编译是一种...
  •   c/c++代码转换成计算机能够执行的... 对于前一个伪指令,预编译所要做的是将程序中的所有Name用TokenString替换,但作为字符串常量的 Name则不被替换。对于后者,则将取消对某个宏的定义,使以后该串的出现...
  •  -dynamic-linker /lib/ld-linux.so.2 使我们能链接到库,这样可执行文件会在执行前生成,而操作系统将加载程序/lib/ld-linux.so.2,以加载外部库并将其链接到程序。这种程序称为动态链接器。  选项-lc表示:...
  • 经过预处理,会产生一个没有宏定义,没有条件编译指令,没有特殊符号的输出文件,这个文件的含义同原本的文件无异,只是内容上有所不同。 读取C/C++源程序,对其中的伪指令(以#开头的指令)进行处理  ①将...
  • 编译程序基本原理

    千次阅读 2018-06-25 21:40:01
    编译程序和解释程序 人们利用高级语言与计算机进行... 大致可分为 汇编程序、解释程序和编译程序. 用某种高级语言或汇编语言编写的程序称为 源程序, 源程序不能直接在计算机上执行. 如果源程序是用汇编语言写的, ...
  • 汇编编译与解释

    千次阅读 2019-02-24 16:33:51
    汇编程序基本原理 ...汇编程序的基本工作包括将每一条可执行汇编语句转换成对应的机器指令;处理源程序中出现的伪指令。 由于汇编指令中形成操作数地址的部分可能出现在后面才定义的符号,所以汇编程序一般...
  • 汇编编译基础

    2020-10-30 17:15:00
    汇编编译1. 环境准备2. 基本训练 1. 环境准备 DOSBox 0.74 模拟X86机器,集成DOS系统 DOSBox 常用命令 mount命令:把某路径文件夹虚拟成对应的盘符 切换盘符操作:在提示符下,键入对应的盘符,例如:进入...
  • 平时我们所说的编译主要包括编译编译汇编与链接,这四部分分别都干什么工作,主要职能有哪些,我们一步步探讨总结。 Windows中以2:2划分内核、用户空间,Linux中以1:3划分内核、用户空间。 2、预编译:i 1....
  • 编译compile:源文件->中间代码文件ObjectFile(Windows下是.obj,Unix/Linux下是.o) 链接link:把大量的ObjectFile合成执行文件 备注: 01 编译时,编译器需要检查语法、函数与变量声明的正确,语法的正确是对于...
  • 在VC中混合编译C++与汇编文件

    千次阅读 2010-10-28 19:47:00
    由于VC在编译x64目标平台的程序时,不支持内联汇编,因此下面介绍编写独立的汇编语言文件,并加入VC的工程中进行编译的方法。 我们将编写一个小程序,来说明如何进行C语言与汇编语言的混合编译。 程序的功能很简单...
  • GCC编译过程(预处理->编译->汇编->链接) 这里gcc编译器 是指在linux类操作系统下,windows编译器 MinGW(相当于windows版GCC) ...这里的编译不是指程序从源文件到二进制程序的全部过程,而是指将经过
  • 从概念上来讲,一个编译程序的整个工作过程是划分成阶段进行的,每个阶段将源程序的一种表示形式转换成另一种表示形式,各个阶段进行的操作在逻辑上是紧密连接在一起的,典型的划分方法主要分为6个阶段、如下: ...
  • gcc编译器编译程序过程

    千次阅读 2015-09-12 21:35:49
    gcc在编译一个程序时,一般需要完成预处理、编译汇编和链接过程。使用gcc编译C程序时,这些过程是使用默认的设置自动完成 的,但是用户可以对这些过程进行设置,控制这些操作的详细过程。 预处理:在...
  • 汇编程序结构 汇编指令:有对应的机器码的指令,可以被编译为机器指令,最终...说明:一个有意义的汇编程序至少要包含一个段,用来存放汇编指令代码。 汇编程序设计的具体过程 编辑、编译、连接、执行...
  • 编译程序和解释程序

    千次阅读 2018-05-28 14:15:28
    编译程序是一个语言处理程序,它可以把高级语言程序给翻译成某个机器的汇编语言程序或者是二进制代码程序,这个阶段叫做编译阶段,需要注意的是编译和运行是两个分开的阶段,也就是说我程序必须要全部翻译完毕之后,...
  • 流程包括:预处理、编译汇编和链接。hello.c文件为一个自己写好的包含main函数的c文件。 预处理 第一个阶段是预处理阶段,在正式的编译阶段之前进行。预处理阶段将根据已放置在文件中的预处理指令来修改源文件的...
  • gcc预处理、编译汇编和链接详解

    千次阅读 2017-07-25 10:54:27
    1简介 2简单编译 ...3多个程序文件的编译 4检错 5库文件连接 5.1编译成可执行文件 5.2链接 5.3强制链接时使用静态链接库 1简介 GCC 的意思也只是 GNU C Compiler 而已。
  • 流程: 预处理:展开头文件/宏替换/去掉注释/条件编译 (test.i main .i) 编译:检查语法,生成汇编 (test.s main .s) 汇编汇编代码转换机器码 ...
  • 四:预编译编译汇编、链接 //详情参考《程序员的自我修养》1-6章 精简版: //在原文基础上做补充和修改 参考原文:https://blog.csdn.net/weixin_40740059/article/details/84075653 如图:c程序的4G虚拟...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 101,790
精华内容 40,716
关键字:

编译程序包含汇编操作吗