免费获客网站、免费获客平台、免费产品获客【风起获客】风起获客
  • 首页
  • 供应商
  • 采购商
  • 找企业
  • 找产品
  • 论坛
登录 / 注册

编译器连接器解释器分别是什么,浅谈汇编器、编译器和解释器

ok11040205
2024-08-14
100
分享

专业编程培训机构——完成蜕变以后轻松拿高薪

电话+V:159999-78052 ,欢迎咨询编译器连接器解释器分别是什么,[python实用课程],[C++单片机原理],[C#网站搭建],[Nodejs小程序开发],[ios游戏开发],[安卓游戏开发],[教会用大脑用想法赚钱实现阶层跨越]

一、计算机系统的软件包括哪些部分?

计算机系统的软件一般包含系统软件和应用软件。

系统软件:主要指用来运行或控制硬件所开发的计算机软件,如操作系统、解释器、编译器、连接器、加载器、汇编器、调试器、数据库管理系统、公用程序等面向开发者的软件。

二、常见系统软件包括哪几种类型?

系统软件主要包括以下几种类型:

1.操作系统:作为计算机软件的核心,操作系统(OS)是计算机系统的最底层软件,负责控制所有计算机运行的程序并管理计算机资源。操作系统是用户与计算机硬件之间的接口,是计算机硬件与应用程序之间的桥梁。它具备处理机、存储器管理、设备管理和文件管理等功能。常见的操作系统包括DOS、Windows、UNIX、Linux和Netware等。

2.语言处理程序:计算机只能直接执行机器语言,因此,为了在计算机上运行高级语言程序,需要相应的程序语言翻译程序。这些翻译程序,也称为编译器或解释器,是专门用于将高级语言转换为机器语言的工具。例如,汇编语言汇编器、C语言编译器和连接器等。

3.数据库管理系统:数据库管理系统(DBMS)是一种用于组织、存储和检索大量数据的软件系统,它使得数据的访问和处理变得更加高效和方便。数据库管理系统能够支持多种高级语言,常见的数据库系统有Foxpro、Access、Oracle、Sybase、DB2和Informix等。

4.辅助程序:辅助程序是指那些用于支持软件开发和维护的软件工具,它们包括编辑器、调试器、编译器和连接器等。这些工具帮助开发者编写、测试和部署软件,提高开发效率。

操作系统的主要特性包括:

-并发性:指的是两个或多个程序在同一时间段内同时执行的能力。

-共享性:操作系统中的资源(包括硬件和信息资源)可以被多个并发执行的进程共享。

-异步性:在多道程序环境中,进程的执行不是顺序进行的,而是会因为资源竞争等原因而暂停和恢复,这种特性称为异步性。

操作系统的分类包括:

-单用户操作系统:设计用于单一用户的计算机系统。

-批处理操作系统:自动化处理大量相似任务的操作系统。

-实时操作系统:对输入的信息进行及时处理并做出响应的操作系统。

-分时操作系统:允许多个用户通过终端同时使用计算机资源的操作系统。

-网络操作系统:专门用于管理和协调网络中资源分配的操作系统。

-分布式操作系统:将计算任务分布在多个计算机上执行的操作系统。

浅谈汇编器、编译器和解释器

2019-06-3016:12·半只程序员

喜欢的可以收藏转发加关注

在计算机诞生不久的早期年代,硬件非常昂贵,而程序员比较廉价。这些廉价程序员甚至都没有“程序员”这个头衔,并且常常是由数学家或者电气工程师来充当这个角色的。早期的计算机被用来快速解决复杂的数学问题,所以数学家天然就适合“编程”工作。

什么是程序?

首先来看一点背景知识。计算机自己是做不了任何事情的,它们的任何行为都需要程序来引导。你可以把程序看成是非常精确的菜谱,这种菜谱读取一个输入,然后生成对应的输出。菜谱里的各个步骤由操作数据的指令构成。听上去有点儿复杂,不过你或许知道下面这个语句是什么意思:

1+2=3

其中的加号是“指令”,而数字1和2是数据。数学上的等号意味着等式两边的部分是“等价”的,不过在大部分编程语言中对变量使用等号是“赋值”的意思。如果计算机执行上面这个语句,它会把这个加法的结果(也就是“3”)储存在内存中的某个地方。

计算机知道如何使用数字进行数学运算,以及如何在内存结构中移动数据。在这里就不对内存进行展开了,你只需要知道内存一般分为两大类:“速度快/空间小”和“速度慢/空间大”。CPU寄存器的读写速度非常快,但是空间非常小,相当于一个速记便签。主存储器通常有很大的空间,但是读写速度就比寄存器差远了。在程序运行的时候,CPU不断将它所需要用到的数据从主存储器挪动到寄存器,然后再把结果放回到主存储器。

汇编器

当时的计算机很贵,而人力比较便宜。程序员需要耗费很多时间把手写的数学表达式翻译成计算机可以执行的指令。最初的计算机只有非常糟糕的用户界面,有些甚至只有前面板上的拨动开关。这些开关就代表一个内存“单元”里的一个个“0”和“1”。程序员需要配置一个内存单元,选择好储存位置,然后把这个单元提交到内存里。这是一个既耗时又容易出错的过程。

程序员BettyJeanJennings(左)和FranBilas(右)在操作ENIAC的主控制面板

后来有一名电气工程师认为自己的时间很宝贵,就写了一个程序,能够把人们可以读懂的“菜谱”一样的输入转换成计算机可以读懂的版本。这就是最初的“汇编器”,在当时引起了不小的争议。这些昂贵机器的主人不希望把计算资源浪费在人们已经能做的任务上(虽然又慢又容易出错)。不过随着时间的推移,人们逐渐发现使用汇编器在速度和准确性上都胜于人工编写机器语言,并且计算机完成的“实际工作量”增加了。

尽管汇编器相比在机器面板上切换比特的状态已经是很大的进步了,这种编程方式仍然非常专业。上面加法的例子在汇编语言中看起来差不多是这样的:

01MOVR0,102MOVR1,203ADDR0,R1,R204MOV64,R005STOR2,R0

每一行都是一个计算机指令,前面是一个指令的简写,后面是指令所操作的数据。这个小小的程序首先会将数值1“移动”到寄存器R0,然后把2移动到寄存器R1。03行把R0和R1两个寄存器里的数值相加,然后将结果储存在R2寄存器里。最后,04行和05行决定结果应该被放在主存储器里的什么位置(在这里是地址64)。管理内存中存储数据的位置是编程过程中最耗时也最容易出错的部分之一。

编译器连接器解释器分别是什么

编译器

汇编器已经比手写计算机指令要好太多了,不过早期的程序员还是渴望能够按照他们所习惯的方式,像书写数学公式一样地去写程序。这种需求推动了高级编译语言的发展,其中有一些已经成为历史,另一些如今还在使用。比如ALGO就已经成为历史了,但是像Fortran和C这样的语言仍然在不断解决实际问题。

ALGO和Fortran编程语言的谱系树

这些“高级”语言使得程序员可以用更简单的方式编写程序。在C语言中,我们的加法程序就变成了这样:

intx;x=1+2;

第一个语句描述了该程序将要使用的一块内存。在这个例子中,这块内存应该占一个整数的大小,名字是x。第二个语句是加法,虽然是倒着写的。一个C语言的程序员会说这是“X被赋值为1加2的结果”。需要注意的是,程序员并不需要决定在内存的什么位置储存x,这个任务交给编译器了。

这种被称为“编译器”的新程序可以把用高级语言写的程序转换成汇编语言,再使用汇编器把汇编语言转换成机器可读的程序。这种程序组合常常被称为“工具链”,因为一个程序的输出就直接成为另一个程序的输入。

编译语言相比汇编语言的优势体现在从一台计算机迁移到不同型号或者品牌的另一台计算机上的时候。在计算机的早期岁月里,包括IBM、DEC、德州仪器、UNIVAC以及惠普在内的很多公司都在制造除了大量不同类型的计算机硬件。这些计算机除了都需要连接电源之外就没有太多共同点了。它们在内存和CPU架构上的差异相当大,当时经常需要人们花费数年来将一台计算机的程序翻译成另一台计算机的程序。

有了高级语言,我们只需要把编译器工具链迁移到新的平台就行了。只要有可用的编译器,高级语言写的程序最多只需要经过小幅修改就可以在新的计算机上被重新编译。高级语言的编译是一个真正的革命性成果。

1983发布的IBMPCXT是硬件价格下降的早期例子。

程序员们的生活得到了很好的改善。相比之下,通过高级语言表达他们想要解决的问题让事情变得轻松很多。由于半导体技术的进步以及集成芯片的发明,计算机硬件的价格急剧下降。计算机的速度越来越快,能力也越来越强,并且还便宜了很多。从某个时间点往后(也许是80年代末期吧),事情发生了反转,程序员变得比他们所使用的硬件更值钱了。

解释器

随着时间的推移,一种新的编程方式兴起了。一种被称为“解释器”的特殊程序可以直接读取一个程序将其转换成计算机指令以立即执行。和编译器差不多,解释器读取程序并将它转换成一个中间形态。但和编译器不同的是,解释器直接执行程序的这个中间形态。解释型语言在每一次执行的时候都要经历这个过程;而编译程序只需要编译一次,之后计算机每次只需要执行编译好的机器指令就可以了。

顺便说一句,这个特性就是导致人们感觉解释型程序运行得比较慢的原因。不过现代计算机的性能出奇地强大,以至于大多数人无法区分编译型程序和解释型程序。

解释型程序(有时也被成为“脚本”)甚至更容易被移植到不同的硬件平台上。因为脚本并不包含任何机器特有的指令,同一个版本的程序可以不经过任何修改就直接在很多不同的计算机上运行。不过当然了,解释器必须得先移植到新的机器上才行。

一个很流行的解释型语言是perl。用perl完整地表达我们的加法问题会是这样的:

$x=1+2

虽然这个程序看起来和C语言的版本差不多,运行上也没有太大区别,但却缺少了初始化变量的语句。其实还有一些其它的区别(超出这篇文章的范围了),但你应该已经注意到,我们写计算机程序的方式已经和数学家用纸笔手写数学表达式非常接近了。

虚拟机

最新潮的编程方式要数虚拟机(经常简称VM)了。虚拟机分为两大类:系统虚拟机和进程虚拟机。这两种虚拟机都提供一种对“真实的”计算硬件的不同级别的抽象,不过它们的作用域不同。系统虚拟机是一个提供物理硬件的替代品的软件,而进程虚拟机则被设计用来以一种“系统独立”的方式执行程序。所以在这个例子里,进程虚拟机(往后我所说的虚拟机都是指这个类型)的作用域和解释器的比较类似,因为也是先将程序编译成一个中间形态,然后虚拟机再执行这个中间形态。

虚拟机和解释器的主要区别在于,虚拟机创造了一个虚拟的CPU,以及一套虚拟的指令集。有了这层抽象,我们就可以编写前端工具来把不同语言的程序编译成虚拟机可以接受的程序了。也许最流行也最知名的虚拟机就是Java虚拟机(JVM)了。JVM最初在1990年代只支持Java语言,但是如今却可以运行许多流行的编程语言,包括Scala、Jython、JRuby、Clojure,以及Kotlin等等。还有其它一些不太常见的例子,在这里就不说了。我也是最近才知道,我最喜欢的语言Python并不是一个解释型语言,而是一个运行在虚拟机上的语言!

虚拟机仍然在延续这样一个历史趋势:让程序员在使用特定领域的编程语言解决问题的时候,所需要的对特定计算平台的了解变得越来越少了。

就是这样了

希望你喜欢这篇简单介绍软件背后运行原理的短文。有什么其它话题是你想让我接下来讨论的吗?在评论里告诉我吧。


via:https://opensource.com/article/19/5/primer-assemblers-compilers-interpreters

本文由LCTT原创编译,Linux中国荣誉推出

学习C/C++的伙伴可以私信回复小编“学习”领取全套免费C/C++学习资料、视频

【WINDRISES EMPLOYMENT PROGRAMMING】尊享对接老板

电话+V:159999-78052

机构由一批拥有10年以上开发管理经验,且来自互联网或研究机构的IT精英组成,负责研究、开发教学模式和课程内容。公司具有完善的课程研发体系,一直走在整个行业发展的前端,在行业内竖立起了良好的品质口碑。

编译器连接器解释器分别是什么
相关新闻
  • 01
    使命召唤16笔记本玩家画质设置推荐,cod16战区画面模糊怎么解决?cod16战区画面为什么会模糊?
    148
  • 02
    中医专长医师资格证报考流程,中医人经常使用的十个网站分享
    115
  • 03
    编译器连接器解释器分别是什么,浅谈汇编器、编译器和解释器
    99
  • 04
    如何找到魔兽争霸的程序员任务在哪里,魔兽是什么公司出的??
    94
  • 05
    手机怎么换字体?手机上调整字体大小的方法:让你的阅读更舒适
    88
  • 06
    为什么数据库连接不上了?...申请数据库之间数据同步迁移的方法及装置专利,可以应用于计算机...
    86
  • 07
    许家印建了多少房子,恒大地产最近怎么了2021一时冲动买了恒大房子想退房怎么办
    85
  • 08
    基因突变未在数据库中找到数据,如何利用数据库查询细胞某基因表达情况
    77
  • 09
    重庆开县的“申通E物流公司”在哪?电话多少?好心人帮帮忙,律师公证工作要服务发展大局
    74
  • 10
    没什么经验的初级安卓程序员一个月大概能拿多少工资呀?90后程序员开发APP诈骗460余万元,涉及充值订单十万余单
    74
  • 11
    山姆会员有什么好处,山姆·阿尔特曼做错了什么
    71
  • 12
    等势面的实例,高二物理等势面带电粒子运动轨迹1017
    66
  • 13
    姜涛获全球最帅面孔第二名
    62
  • 14
    赵本山也太超前了
    59
  • 15
    刘强东送8万盒巧克力 京东员工年底三重惊喜
    57
相关广告
广告图
联系方式 微信
引擎网址:
百度
雅虎
360
谷歌
必应
本站导航:
首页
找供应商
找采购商
找企业
找产品
论坛
站点地图
友情链接:
太平洋
中关村
阿里巴巴
凤凰
新浪
腾讯
网易
搜狐
百度
交换链接:
免费获客网站、免费获客平台、免费产品获客【风起获客】
粤ICP备2024275337号-1 地址:广州市中山大道西1344号神秘花园1F1002 24小时服务热线:15999978052 联系QQ:1258690818 隐私条款
广州风起网络科技有限公司 Copyright © 2020 - 2025