导航:首页 > 源码编译 > 编译程序需要汇编程序的支持吗

编译程序需要汇编程序的支持吗

发布时间:2022-06-30 12:45:08

① 什么是编译程序和汇编程

  1. 编译程序是把用高级程序设计语言或计算机汇编语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序,属于采用生成性实现途径实现的翻译程序。编译程序以高级程序设计语言书写的源程序作为输入,而以汇编语言或机器语言表示的目标程序作为输出;编译出的目标程序通常还要经历运行阶段,以便在运行程序的支持下运行,加工初始数据,算出所需的计算结果。

  2. 汇编程序是指把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序,是为特定计算机或计算机系列设计的一种面向机器的语言,由汇编执行指令和汇编伪指令组成。汇编程序输入的是用汇编语言书写的源程序,输出的是用机器语言表示的目标程序。采用汇编语言编写程序虽不如高级程序设计语言简便、直观,但是汇编出的目标程序占用内存较少、运行效率较高,且能直接引用计算机的各种设备资源。它通常用于编写系统的核心部分程序,或编写需要耗费大量运行时间和实时性要求较高的程序段。汇编程序主要有简单汇编程序、模块汇编程序、条件汇编程序、宏汇编程序、高级汇编程序几种。

② 程序的反编译是否需要 用到 汇编语言, 学习汇编语言之前需要 了解和学习什么,求指教

程序的反编译都是32位的汇编,在此之前应该先了解16位的汇编,因为这些知识是相通的,会了16位汇编,32位的上手非常快。学习16位汇编我推荐王爽的 汇编语言 ,浅显易懂,学习过程循序渐进。

③ 关于汇编语言编译程序的问题

这么说把!简单的可以这么理解,高级语言先转换成汇编语言,汇编语言跟机器语言一一对应然后执行。虽然表达的可能不是很恰当,不过总体就是这个意思,就是说他就像你跟外国人说话一样,他就跟翻译员一样

④ 写编译器必须要会汇编语言吗

这种事情从理论层面来说:不一定要与汇编语言有什么瓜葛。你完全可以让你的编译器直接编译成机器码。大部分C/C++编译器(不是所有的)之所以先编译成汇编语言,是为了解构。从C到汇编的“翻译”相对容易(都算是抽象语言,有语义的),同时汇编语言的编译器效率很高,可以生成质量非常高的机器码。所以两者结合,可以突出各自的优势,减少复杂度。
但是如果有必要,当然也可以直接编写产生机器码的编译器,实际上Java/C#这样的半编译语言和Js这样的脚本语言,都没有先转换成汇编的这一步。前者是因为强大的虚拟机技术,直接把字节码转换成机器码执行了,后者是灵活的解释器,实时把代码转换成机器码执行,而完全没有“编译”这一步(当然如果深究的话,出于性能考虑,很多高性能的解释器也会提前“预编译”一部分代码,但这是具体实现,不是宏观概念)。

⑤ 用c语言写程序时,还可以用汇编语言吗

可以像楼上一样用特定编译器支持的asm、__asm一类关键字内嵌汇编,也可以让编译器编译时输出汇编代码,然后再在上面进行改动,最后一并转成机器码。要用哪种方法还是看需要而定,如果是实现一个特定模块,可以内嵌;如果是要做代码调整,用后一种。
不过话说回来,在现代编译器把优化已经做得很好的情况下,用C这么底层的语言已经很少用得到汇编了。

⑥ c语言编译器是用汇编语言写的吗

这个是肯定的。算法优化,首先是逻辑描述的精炼化。至于C,只是计算逻辑到计算机模式的一种映射,而汇编仅是利用特殊计算机指令的一个更深的藕荷。
不过有一点,C语言由于是计算逻辑到计算机模式的映射,所以不单单考虑算法本身,还肩负数据组织的实现。数据流动方式,数据组织方式,对计算性能的影响也很大。这要看是否和计算机组成原理相贴近。其实这块也是侧重逻辑的设计,而不是具体机器指令的实现,因此汇编是无能为力的。
不过在DSP等特殊CPU架构,C语言和编译器无法很好的将上述逻辑转换为机器指令,或者C本身的逻辑无法很好的贴近CPU的特性,那么还是得汇编。一个典型的例子就是如何使用DSP的并行指令(通常的矢量计算)和并发指令集,几个不同的指令(隶属不同处理单元)的同时执行。使用C语言无法描述清楚这些逻辑方式,而编译器又太水,则还是不得不用汇编。此时C语言仅能沦落到大的计算机组织特性的贴近,和整体框架,模块的设计上。细节方面无能为力了。

⑦ 可以编译和运行汇编语言程序么

这个,你是不是补充一下问题,实在是不清楚你的问题的主题是什么。我估计没有人回答也是这个原因。

汇编语言程序当然是可以编译和运行的,这毫无疑问。

我猜你是想问如何搭建编译运行环境吧?如果是这样,有几种方案可供选择:

  1. 使用emu8086程序,不错的集成环境,缺点是需要花钱的。

  2. 使用dosbox模拟dos环境,在模拟环境中编译、运行、调试,主要用于学习。

    我曾写过一个《dosbox安装使用说明与打包程序》的文档,你可以搜索一下看看。

  3. 使用vmware之类的虚拟机,在上面安装dos操作系统,在该系统中进行学习(这个比较麻烦,不推荐。好处是完全虚拟dos环境,但与外界交互文件等比较麻烦)

  4. 有些国产的集成环境,好像也是集成了dosbox,我自己没用过,有兴趣的话,你可以查找一下试试。

⑧ 汇编语言需要操作系统的支持吗

这个问题比较特殊也比较难. 楼上的回答不是很准确. 我来解释一下.

语言(不管是汇编, 机器语言, 还是高级语言)都是独立于操作系统的. 不同的是低级语言(汇编, 机器语言)依赖与CPU的指令系统, 高级语言(C, Java, C++, Basic)等等完全独立(与CPU的指令集都无关). ---- 你想想, 你在Window下写C程序, 和在Linux下写C程序, 语法会有变化吗?

操作系统支持的是应用程序(也就是你写的程序)的运行. 通俗的讲你不管用什么语言写, 写完之后你总要把源代码变成exe文件(如果Windows下). exe文件的运行是要操作系统支持的. 另外junmarun说的很对, 源代码编译的过程本质上也是一个exe的运行过程, 也是要操作系统支持的.

所以操作系统支持的不是汇编语言本身, 而是汇编语言所编出的程序. 换句话说只要你编出的程序不是操作系统, 总是要操作系统的支持的, 与你用什么方式编程无关.

可能你想问如果写操作系统会怎么样? 那就要考虑硬件的支持了. 任何程序都是建立在一个平台上的.

⑨ 请问汇编程序, 解释程序, 编译程序分别指

1、汇编程序

把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序。汇编程序输入的是用汇编语言书写的源程序,输出的是用机器语言表示的目标程序。汇编语言是为特定计算机或计算机系列设计的一种面向机器的语言,由汇编执行指令和汇编伪指令组成。

采用汇编语言编写程序虽不如高级程序设计语言简便、直观,但是汇编出的目标程序占用内存较少、运行效率较高,且能直接引用计算机的各种设备资源。它通常用于编写系统的核心部分程序,或编写需要耗费大量运行时间和实时性要求较高的程序段。

2、解释程序

解释程序是一种语言处理程序,在词法、语法和语义分析方面与编译程序的工作原理基本相同,但在运行用户程序时,它直接执行源程序或源程序的内部形式(中间代码)。因此,解释程序并不产生目标程序,这是它和编译程序的主要区别。

3、编译程序

编译程序也称为编译器,是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。编译程序属于采用生成性实现途径实现的翻译程序。

它以高级程序设计语言书写的源程序作为输入,而以汇编语言或机器语言表示的目标程序作为输出。编译出的目标程序通常还要经历运行阶段,以便在运行程序的支持下运行,加工初始数据,算出所需的计算结果。

(9)编译程序需要汇编程序的支持吗扩展阅读:

工作过程

1、汇编程序

输入汇编语言源程序。检查语法的正确性,如果正确,则将源程序翻译成等价的二进制或浮动二进制的机器语言程序,并根据用户的需要输出源程序和目标程序的对照清单;如果语法有错,则输出错误信息,指明错误的部位、类型和编号。最后,对已汇编出的目标程序进行善后处理。

2、解释程序

由总控程序完成初始化工作。依次从源程序中取出一条语句进行语法检查,如有错,输出错误信息;如果通过了语法检查,则根据语句翻泽成相应的指令并执行它。检查源程序是否已经全部解释执行完毕,如果未完成则继续解释并执行下一条语句,直到全部语句都处理完毕。

3、编译程序

先进行词法分析与语法分析,然后生成中间代码,接着对程序进行多种等价变换来代码优化,最后生成目标代码。

⑩ 汇编与编译

汇编就是:mov ax,0
mov bx,0
mov cx,1
push ax
等等这些你写的指令!
由于计算机只认识二进制数 也就是01代码所以你写的这些东西他并不懂
这就需要专门的软件来翻译 也就是编译
上面的代码经过编译过后就变成了一大堆的01代码
通过连接才能生成计算机能执行的程序

阅读全文

与编译程序需要汇编程序的支持吗相关的资料

热点内容
游资抄底源码公式 浏览:800
用VF命令 浏览:948
解压速度14m 浏览:327
php获取httpheader 浏览:294
什么软件可以修改pdf文件 浏览:865
命令行截图软件 浏览:732
程序员加班多 浏览:123
android设置view的背景 浏览:684
u盘加密工具哪个好 浏览:571
php生成html模板引擎 浏览:26
如何设置app封杀 浏览:823
手机将照片弄成压缩包 浏览:221
卡联购卡盟官网源码 浏览:867
网页弄成pdf 浏览:223
dos的删除命令 浏览:309
区块链的加密物联网传输 浏览:572
如何卸载桌面布局已定的app 浏览:678
vs重置命令 浏览:613
如何学会学习python 浏览:227
程序员钉钉 浏览:758