架构 -- 汇编语言

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

  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/

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


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

查看所有标签

猜你喜欢:

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

Viral Loop

Viral Loop

Adam L. Penenberg / Tantor Media / 2009-10-27 / USD 34.99

From Google to Facebook, a respected journalist delves into how a "viral loop" can make an online business a success.一起来看看 《Viral Loop》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具