什么是高级语言、机器语言、汇编语言?什么是编译和解释?

1、高级语言

计算机程序是一种让计算机执行特定任务的方法。程序是由程序员用一种称为编程语言的特殊语言编写的。编程语言有很多种,例如 C、C++、Java、Python 等。这些语言被称为高级语言,因为它们更接近人类的自然语言,而不是计算机能够直接理解的二进制数字。

 C/C++ 中的指令:a = 97;

高级语言中理想的属性

首先,高级语言更容易阅读和编写,因为命令更接近我们每天使用的自然语言。其次,高级语言需要更少的指令来执行与低级语言相同的任务,使程序更简洁、更容易理解。a = b * 2 + 5;在 C++ 中,您可以在一行中执行类似操作。在汇编语言中,这需要 5 或 6 条不同的指令。程序可以针对许多不同的系统进行编译(或解释),并且您不必更改程序以在不同的 CPU 上运行(您只需为该 CPU 重新编译)。

2、机器语言

计算机的 CPU 无法使用 C/C++。CPU 可以直接理解的有限指令集称为机器代码(或机器语言指令集)。

这是机器语言指令示例,是与上面C/C++ 中相同的指令:10110000 01100001

这些指令指令都由 1 和 0 的序列组成。每个单独的 0 或 1 称为一个二进制数字,简称。组成单个命令的位数各不相同。例如,某些 CPU 处理的指令始终是 32 位长,而其他一些 CPU(例如您可能正在使用的 x86/x64 系列)的指令可以是一个可变长度。

小知识(char *占几个字节)

char * 是一个指针类型,它表示一个指向字符的地址。指针的大小取决于系统的地址空间也就是系统可以访问的内存的范围。

8位系统的地址空间是 2^8 = 256 个字节,所以指针的大小是 1 个字节。

32位系统的地址空间是 2^32 = 4 GB,所以指针的大小是 4 个字节。

64位系统的地址空间是 2^64 = 16 EB,所以指针的大小是 8 个字节。

不同操作系统的库无法通用的原因(32/64)

每组二进制数字都被 CPU 解释为执行非常具体的工作的命令,例如比较这两个数字,或者将此数字放入该内存位置。但是,由于不同的 CPU 具有不同的指令集,因此为一种 CPU 类型编写的指令无法在不共享相同指令集的 CPU 上使用。这意味着程序通常无法移植(无需重大返工即可使用)到不同类型的系统,并且必须重新编写。

3、汇编语言

由于机器语言对于人类来说很难阅读和理解,因此发明了汇编语言。在汇编语言中,每条指令都由一个简短的缩写(而不是一组位)来标识,并且可以使用名称和其他数字。

这是与上面相同的汇编语言指令:mov al, 061h

这使得汇编比机器语言更容易阅读和编写。然而,CPU不能直接理解汇编语言。相反,汇编程序必须先翻译成机器语言,然后才能由计算机执行。这是通过使用称为汇编程序的程序来完成的。用汇编语言编写的程序往往速度非常快,并且在速度至关重要的今天仍然使用汇编语言。

然而,组装仍然有一些缺点。首先,汇编语言仍然需要大量指令来完成甚至简单的任务。虽然各个指令本身在某种程度上是人类可读的,但理解整个程序正在做什么可能具有挑战性(这有点像试图通过单独查看每个字母来理解句子)。其次,汇编语言的可移植性仍然不是很好——为一个 CPU 用汇编语言编写的程序可能无法在使用不同指令集的硬件上运行,并且必须重写或进行大量修改。

4、编译和解释

计算机程序是一种让计算机执行特定任务的方法。程序是由程序员用一种称为编程语言的特殊语言编写的。编程语言有很多种,例如 C、C++、Java、Python 等。这些语言被称为高级语言,因为它们更接近人类的自然语言,而不是计算机能够直接理解的二进制数字。

计算机的核心部件是 CPU(中央处理器),它负责执行程序中的指令。CPU 只能理解一种称为机器语言的低级语言,它是由 0 和 1 组成的位序列。每种 CPU 类型都有自己的机器语言,也称为指令集。这意味着用一种机器语言编写的程序不能在另一种机器语言的 CPU 上运行。

为了让 CPU 能够执行高级语言编写的程序,需要将高级语言转换为机器语言。这可以通过两种主要方式实现:编译和解释。

编译

编译是一种将高级语言的源代码(程序员编写的代码)转换为可执行文件(机器语言的代码)的过程。这是通过使用一种称为编译器的程序来完成的。编译器可以根据不同的 CPU 类型生成不同的可执行文件。一旦生成了可执行文件,就不需要源代码或编译器来运行程序。

这是编译过程的简化表示:

由于 C++ 程序通常是编译的,因此我们很快就会更详细地探讨编译器。

解释

解释是一种在运行时将高级语言的源代码逐行转换为机器语言的过程。这是通过使用一种称为解释器的程序来完成的。解释器可以在不同的 CPU 类型上运行相同的源代码。每次运行程序时都需要源代码和解释器。解释器往往比编译器更灵活,但运行程序时效率较低,因为每次运行程序时都需要完成解释过程。这也意味着每次运行程序时都需要解释器。

这是解释过程的简化表示:

编译和解释优缺点

  1. 编译的优点是生成的可执行文件通常运行得更快,而且不需要分发源代码。
  2. 编译的缺点是需要为每种 CPU 类型生成不同的可执行文件,而且编译过程可能比较耗时。
  3. 解释的优点是源代码可以在不同的 CPU 类型上运行,而且不需要编译过程。
  4. 解释的缺点是运行程序时需要解释器,而且运行速度通常比编译的慢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/198951.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构 —— 二叉树的链式结构实现】

数据结构 —— 二叉树的链式结构实现 1.树的概念及其结构1.1.树概念1.2.树的结构1.3树的相关概念1.4.树的表示1.5. 树在实际中的运用(表示文件系统的目录树结构) 2.二叉树的概念及其结构2.1二叉树的概念2.2.现实中的二叉树:2.3. 特殊的二叉树…

C++单调向量(栈):好子数组的最大分数

作者推荐 利用广度优先或模拟解决米诺骨牌 题目 给你一个整数数组 nums &#xff08;下标从 0 开始&#xff09;和一个整数 k 。 一个子数组 (i, j) 的 分数 定义为 min(nums[i], nums[i1], …, nums[j]) * (j - i 1) 。一个 好 子数组的两个端点下标需要满足 i < k <…

32+OLED之IIC手撕亚索七级狗牌

成品效果&#xff1a; 硬件配方&#xff1a;STM32F103C8T6 SSD1306 软件配方&#xff1a;字模提取V2.1 CopyLeft By Horse2000 STM32CubeMX keil5 思路&#xff1a; 1.找到图片&#xff0c;将其转化为128*64 像素大小的二值化图片&#xff1b;【python实现转化】&#xff…

配置zabbix-proxy主动式

IP地址对应关系如下&#xff1a; zabbix-server122.9.8.21zabbix-proxy122.9.4.102zabbix-agent2116.63.9.109 一、 安装zabbix-server https://blog.csdn.net/qq_50247813/article/details/132131774 二、 安装zabbix-proxy a. 安装zabbix源 rpm -Uvh https://repo.zabbix…

机器学习笔记 - 基于百度飞桨PaddleSeg的人体分割

一、简述 虽然Segment Anything用于图像分割的通用大模型看起来很酷(飞桨也提供分割一切的模型),但是个人感觉落地应用的时候心里还是更倾向于飞桨这种场景式的,因为需要用到一些人体分割的需求,所以这里主要是对飞桨高性能图像分割开发套件进行了解和使用,但是暂时不训练…

Modbus平台:协议中间件(支持Modbus TCP、RTU、ASCII)

该程序可放置外网中&#xff0c;适用于DTU长连接&#xff08;心跳包必须包含DTU&#xff0c;可以是tcp/udp&#xff09;&#xff0c;也可以在内网中&#xff0c;短连接访问设备server 支持协议&#xff1a;Modbus TCP | RTU | ASCII 连接方式&#xff1a;TcpAtive: TCP主动 | …

机器人制作开源方案 | 智能扶老助残辅助管家

作者&#xff1a;孙运通 黄善越 卢瑀 张宇峰 郑乐怡 单位&#xff1a;河海大学 指导老师&#xff1a;陆其清 人口老龄化始终是我国一个极为严峻的社会问题。独居老人和空巢老人占总人口比重日益提高&#xff1a;预计至2050年老龄人口占比将超20%&#xff0c;绝大部分城市和地…

基于单片机环境监测温湿度PM2.5系统设计

**单片机设计介绍&#xff0c;基于单片机环境监测温湿度PM2.5系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 设计一个基于单片机环境监测温湿度PM2.5的系统是一个非常有意义的项目。以下是一个基本的介绍&#xff1a; …

云原生实战课大纲<2>

我们pod的数据挂载文件可以使用 pv-pvc的方式 1. 创建pv池 2. 在pv池中创建pv&#xff0c;并且设置pv的模式 3. 编写pod 写对应的pvc 申请书 就可以了这就是我们k8s中的pv和pvc 基于pv池创建pv的时候会有容量限制呢么关于配置呢&#xff0c;我们以前会有这种场景 比如说在dock…

Android Studio导入项目一直显示正在下载Gradle项目

如题&#xff0c;问题图类似如下&#xff1a; &#xff08;此图是解决以后截的&#xff0c;之前遇到问题没截图&#xff09; 解决方法 先找到你正在下载的gradle的版本是哪个 然后在链接中 ​​​​​​Gradle Distributions 找到你所对于gradle的版本&#xff0c;下载对应…

Centos7安装配置nginx

快捷查看指令 ctrlf 进行搜索会直接定位到需要的知识点和命令讲解&#xff08;如有不正确的地方欢迎各位小伙伴在评论区提意见&#xff0c;小编会及时修改&#xff09; Centos7安装配置nginx Nginx介绍 Nginx (engine x) 是一个高性能的 HTTP 和 反向代理 服务&#xff0c;也…

Spring Security 6.x 系列(6)—— 显式设置和修改登录态信息

一、前言 此篇是对上篇 Spring Security 6.x 系列&#xff08;5&#xff09;—— Servlet 认证体系结构介绍 中4.9章节显式调用SecurityContextRepository#saveContext进行详解分析。 二、设置和修改登录态 2.1 登录态存储形式 使用Spring Security框架&#xff0c;认证成功…

34 - 记一次线上SQL死锁事故:如何避免死锁?

之前我参与过一个项目&#xff0c;在项目初期&#xff0c;我们是没有将读写表分离的&#xff0c;而是基于一个主库完成读写操作。在业务量逐渐增大的时候&#xff0c;我们偶尔会收到系统的异常报警信息&#xff0c;DBA 通知我们数据库出现了死锁异常。 按理说业务开始是比较简…

业务逻辑漏洞

业务逻辑漏洞 扫描器扫不出来 漏洞包括 暴力破解任意用户/密码登陆短信/邮箱轰炸验证码绕过/爆破/重放/回传用户名/手机号枚举(用户名枚举&#xff1a;当用户登录时&#xff0c;显示用户名不存在&#xff0c;或密码不正确&#xff0c;两个其中一个不正确就称为用户名枚举)越…

MySQL系列 - 数据类型

MySQL是一种常用的关系型数据库管理系统&#xff0c;它支持多种数据类型&#xff0c;包括整数、浮点数、字符串、日期和时间等。在本文中&#xff0c;我们将介绍MySQL中常用的数据类型及其用法。 MySQL数据类型介绍&#xff1a; 1、整数类型&#xff1a; MySQL提供了多种整数…

微信小程序 老年人心血管健康知识科普系统

本系统的功能有管理员&#xff1a;个人中心&#xff0c;用户管理&#xff0c;热点信息管理&#xff0c;疾病管理&#xff0c;疾病类型管理&#xff0c;治疗管理&#xff0c;治疗类型管理&#xff0c;护理管理&#xff0c;护理类型管理&#xff0c;科普管理&#xff0c;科普类型…

Elasticsearch 线上实战问题及解决方案探讨

1、reindex相关问题 1.1 问题描述 我有 1tb 的一个大索引若干&#xff0c;要迁移到另外一个新集群去&#xff0c;有没有好办法&#xff1f;reindex好像会中断...... reindex 是不是就算设置了频率也会莫名的中断&#xff0c;而且没地方查到错误&#xff1f;1000多万的数据&…

『 Linux 』进程优先级

文章目录 什么是优先级Linux下的进程优先级PRI与NI使用top查看进程以及对进程的优先级的修改 进程优先级的其他概念竞争性与独立性并发与并行 什么是优先级 优先级,顾名思义,即在同一环境下不同单位对同一个资源的享有顺序; 一般优先级高的单位将优先占有该资源; 在进程当中进…

海翔云平台 getylist_login.do SQL 注入漏洞复现

0x01 产品简介 海翔云平台一站式整体解决方案提供商&#xff0c;业务涵盖 批发、连锁、零售行业ERP解决方案、wms仓储解决方案、电商、外勤、移动终端&#xff08;PDA、APP、小程序&#xff09;解决方案。 0x02 漏洞概述 海翔云平台getylist_login.do接口处存在SQL注入漏洞&am…

wmvcore.dll丢失怎么办?解决电脑出现wmvcore.dll丢失问题5个方法

wmvcore.dll缺失5个解决方法与wmvcore.dll丢失原因及文件介绍 引言&#xff1a; 在日常使用电脑的过程中&#xff0c;我们可能会遇到一些错误提示&#xff0c;其中之一就是wmvcore.dll缺失。wmvcore.dll是Windows Media Video编码解码相关动态链接库文件之一&#xff0c;它对…