通过之前的学习我们知道了计算机做任何工作都是由存储在其中的程序来控制的,而程序(Program)是由一条条的指令和各种数据组成的,而且这些指令和数据都是由只有 0 和 1 两种符号的二进制数来表示的(见代码清单 1)。

代码清单 1:机器语言代码片段

00000000 00111110 11001111

00000010 11010011 00000000

00000100 00111110 11111111

00000110 11010011 00000000

00001000 00111110 11001111

00001010 11010011 00000011

00010100 11000011 00010000 00000000

在计算机世界中,把这种用二进制代码表示的计算机能直接识别和执行的指令和数据的集合(程序)称为“机器语言”(面向机器的语言)。

机器语言是唯一一种 CPU 能直接理解并执行的编程语言,用其他语言编写的程序计算机是不能直接运行的,必须先转换成机器语言。

就如同在人类世界中把用 a~z 26 个英文字母组成的语言称为英语一样,在人类世界中,除了英语外,还有汉语、日语、法语等各种不同的语言。在计算机世界中,除了用二进制代码表示的机器语言外,还有汇编语言、BASIC 语言、Pascal 语言、C语言、Java 语言、Visual Basic 语言、PHP 语言、HTML 语言等,以上这些都统称为计算机的程序设计语言。

机器语言是最底层的计算机语言,用机器语言编写的程序都是由 8bit 二进制数构成的。每个 8bit 的二进制数都是有特定含义的指令或数据。可对于人而言,看到的都是 0 和 1 的组合,很难判断各个组合都表示什么。

于是就有人发明了另一种编程方法,根据表示指令功能的英语单词给每一种指令起一个相似的昵称,并用这个昵称来代替表示指令的 0 和 1 的二进制数组合,而数据则用我们更容易接受的十六进制数或十进制数来表示(代码清单2)。这种类似英语单词的昵称叫作“助记符”,我们把这种使用“助记符”的编程语言称为“汇编语言”。

代码清单 2:汇编语言程序示例(输出“Hello,world!”)

section .data                          ;数据段声明

msg db "Hello, world!", 0xA    ;要输出的字符串

len equ $ - msg            ;字串长度

section .text                          ;代码段声明

global _start                          ;指定入口函数

_start:                              ;在屏幕上显示一个字符串

mov edx, len              ;参数三:字符串长度

mov ecx, msg              ;参数二:要显示的字符串

mov ebx, 1               ;参数一:文件描述符(stdout)

mov eax,4                ;系统调用号(sys_write)

int 0x80                ;调用内核功能

;退出程序

mov ebx,0                ;参数一:退岀代码

mov eax, 1               ;系统调用号(sys_exit)

int 0x80                ;调用内核功能

用汇编语言编写的程序计算机是不能直接运行的,必须先转换成机器语言。机器语言是唯一一种CPU能直接理解并执行的编程语言。

汇编语言的助记符以及数据和机器语言的二进制代码都是一一对应的,都是针对计算机硬件的,也就是说都是面向机器的语言。不同的计算机硬件(CPU)所用的助记符和二进制代码是不一样的,所以这样的程序其通用性不好,如果把它移植到其他的计算机上就无法正常运行了。我们通常把机器语言和汇编语言称为低级语言。

总结

机器语言是唯一一种 CPU 能直接理解并执行的编程语言。

用汇编语言编写的程序计算机是不能直接运行的,必须先转换成机器语言。

php 低级语句,低级语言是什么?相关推荐

  1. php后台守护进程+进程信号处理

    为什么80%的码农都做不了架构师?>>>    <?php set_time_limit(0); // 只允许在cli下面运行 if (php_sapi_name() != & ...

  2. 基于Swoole和Redis实现的并发队列处理系统

    背景 由于PHP不支持多线程,但是作为一个完善的系统,有很多操作都是需要异步完成的.为了完成这些异步操作,我们做了一个基于Redis队列任务系统. 大家知道,一个消息队列处理系统主要分为两大部分:消费 ...

  3. 流程控制 - PHP手册笔记

    流程控制 - PHP手册笔记 原文:流程控制 - PHP手册笔记 脚本由语句构成,语句靠流程控制实现功能,这一节主要介绍了几个关键字的使用. elseif elseif和else if的行为完全一样, ...

  4. 8. php回调后门

    中国菜刀下载,基于原版中国菜刀优化版20160309. 下载地址: http://pan.baidu.com/s/1jHoJxHW China chopper http://pan.baidu.com ...

  5. php进程学习(一)

    https://www.php.cn/php-ercikaifa-345122.html https://m.php.cn/article/421935.html 一.在Linux操作系统中有哪些信号 ...

  6. php的declare命令

    定义 php中的declare结构用来设定一段代码的执行指令 declare用于执行3个指令:ticks,encoding,strict_types 作用域 declare结构用于全局范围,影响到其后 ...

  7. php不支持定时器么,PHP没有定时器?

    确实,PHP没有类似于JS中的setInterval或者setTimeout这样的原生定时器相关的函数.但是我们可以通过其他方式来实现,比如使用declare. 先来看看是如何实现的,然后我们再好好学 ...

  8. PHP中处理函数的函数(Function Handling Functions)

    2019独角兽企业重金招聘Python工程师标准>>> call_user_func_array - 让参数以数组的形式调用一个函数 call_user_func - 调用一个存在的 ...

  9. 基于Swoole和Redis实现的并发队列处理系统 1

    背景 由于PHP不支持多线程,但是作为一个完善的系统,有很多操作都是需要异步完成的.为了完成这些异步操作,我们做了一个基于Redis队列任务系统. 大家知道,一个消息队列处理系统主要分为两大部分:消费 ...

最新文章

  1. C#值类型与引用类型
  2. 转: ashx中使用Session
  3. (资源整理)带你入门Spark
  4. 如何安装TrueNAS
  5. FR公式形态定义及运用范例
  6. java自定义异常和throw、throws的使用
  7. 大学物理计算机仿真实验报告,大学物理实验实验报告模板.doc
  8. 无线路由器和无线网卡的普及知识贴及选择(2019.05更新802.11AX网卡,3T3R wave2路由器推荐)
  9. 沉没的王国---揭秘滇东自杞国(5)
  10. 计算机大赛横幅标语有趣的,有创意的横幅标语大全
  11. 嵌入式系统工程师的职位要求
  12. 学习仿今日头条疫情地图+用户画像(echarts)
  13. 微信小程序项目转换成uniapp项目
  14. 北京圣思园JAVA培训教学视频汇总
  15. Dicom学习之一:大尾和小尾LittleEndian/BigEndian
  16. 计算机OSI七层参考模型
  17. VSCode创建控制台程序
  18. 第14课:scratchjr踢足球
  19. System32下几乎所有文件的简单说明
  20. 关于QT,你需要知道这些基础知识

热门文章

  1. mysql主从之slave-skip-errors和sql_slave_skip_counter
  2. 08.树:2_二叉树
  3. Github 下载单个文件
  4. javaweb——新手上路1
  5. 使用dmidecode获取常用的硬件信息
  6. ASA 5505 配置
  7. Cisco1721的简单配置
  8. insmod module 失败(skyeye + armlinux)
  9. java sbt二叉树,Treap——堆和二叉树的完美结合,性价比极值的搜索树
  10. 今日讨论:时间紧,工作量太大,作为测试该怎么办?