架构 -- 汇编语言

栏目: 编程语言 · 发布时间: 7年前

  1. 在第一门面向 程序员 的编程语言出现前,只能通过理解 CPU指令的二进制表示 ,将程序以 二进制数据的方式 刻录到存储上
  2. 这个时期, 编程的效率极其低下 ,软件和硬件的边界还非常 模糊 ,把程序刻录到存储上往往还涉及到硬件的 电气操作

汇编语言

  1. 为了解决 编程效率 的问题,诞生了汇编语言(和解释它的编译器)
  2. 汇编语言的编译器将汇编语言写的程序编译成 CPU指令序列 ,并将其保存到 外置存储 上
  3. 汇编语言 非常接近 计算机的CPU指令,一条汇编指令基本和一条CPU指令 一一对应

意义

  1. 汇编语言的出现,让编程成为了一个 纯软件 行为
  2. 程序员可以 反复修改 汇编程序,然后通过汇编编译器将其翻译成机器语言,并写入到外置存储中

效率优化

  1. 用 文本符号 表达 机器指令
    • 例如add表示加法运算,而不用记忆对应的CPU指令的二进制表示
  2. 用 文本符号 表达要操作的 内存地址 ,并支持 内存地址的自动分配
    • 例如使用了一段文本Hello,那么汇编编译器将为程序开辟一段 静态存储区 (数据段)来存放这段文本
    • 并用一个文本符号(变量名)指向它,用 变量名 去表达一段内存数据
    • 这样就 不用关注内存的物理地址 ,而把精力放在程序的逻辑表达上
  3. 用 文本符号 表达要调用的 函数地址
    • 对 CPU指令 来说, 函数只有地址没有名字
    • 从 编程 的角度来说, 函数是机器指令的扩展
    • 和机器指令需要用文本符号助记一样,函数的名称也需要用文本符号来助记
  4. 用 文本符号 表达要 跳转的目标地址
    • 在高级语言里,流程控制的语法很多,例如goto/if/else/for/while/until等
    • 在 汇编语言 里,只有两个基本的跳转指令:无条件跳转( jmp )和条件跳转( je/jne )
    • 同样,跳转的目标地址用文本符号有助于程序逻辑的表达,而无需把精力放在具体的指令跳转地址上
  5. 小结
    • 汇编从 指令能力 上来说,和 机器指令 是 一致 的
    • 汇编把人们从 物理硬件地址 中解脱出来, 专注于程序逻辑的表达

MVP

  1. 键盘和显示器的驱动程序
  2. 当时最主流的外置存储设备的驱动程序
  3. 汇编程序 编辑器 :可以从存储中读取汇编程序代码,修改并保存到存储中
  4. 汇编程序 编译器 :可以将汇编代码编译成机器代码,并保存在存储中
  5. 执行机器代码的程序:可以执行一段保存在外置存储设备中的机器代码

汇编与操作系统

  1. 汇编程序的出现要 早于 操作系统
  2. 操作系统的 核心目标 是 软件治理 ,只有在计算机需要管理很多任务时,才需要操作系统

转载请注明出处:http://zhongmingmao.me/2019/04/23/architecture-assembly-language/

访问原文「架构 -- 汇编语言」获取最佳阅读体验并参与讨论


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

图论——一个迷人的世界

图论——一个迷人的世界

本杰明,查特兰,张萍 / 机械工业出版社 / 2001-1-1

本书介绍了图论的基本概念,解释了图论中各种经典问题。例如,熄灯的问题、小生成树问题、哥尼斯堡七桥问题、中国邮递员问题、国际象棋中马的遍历问题和路的着色问题等等。书中也给出了各种类型的图,例如,二部图、欧拉图、彼得森图和树;等等。每一章都为读者设置了练习题,包含了具有挑战性的探索性问题。一起来看看 《图论——一个迷人的世界》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

MD5 加密
MD5 加密

MD5 加密工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试