从硬件到软件-历史上第一个汇编器的实现原理


在前面学习汇编语言的时候,对硬件和软件之间缺失的一环 吐了下槽,后来在课程的问答论坛上提问,得到了比较满意的回答,虽然还不是很详细,但大体可以体会到了,也有了进一步学习的方向: 硬件到软件的跳跃
访问比较慢,可以备上梯子再访问,没有梯子多刷新几次也能加载出来。
实现的核心是 自举(bootstrapping),回答也提到这是项目中很小的一步,应该在课程开源的模拟器中实现了。
现在把大神的回答转录整理如下。

问题

  1. 在没有高级语言,没有模拟器的情况下,第一个汇编器是怎么实现的?
  2. 二进制代码不是自动加载到CPU中的,这个“加载”从一开始是谁完成的?如果是CPU,那就是先有鸡还是先有蛋的问题。

回答

一、加载程序到硬件

加载程序到这个硬件,分成两步:

  1. 指定要加载的目标位置,是一个内存地址,可以由程序计数器指定。
  2. 手动设置一系列开关,实现加载的功能,将二进制模式(存储在某个非易失性存储设备(纸带等))输入到1中的目标内存地址中。
二、程序的编写与汇编器

加载的功能已经在一中实现了,那被加载的二进制模式从哪里来?这里就是汇编器引入的地方。

  1. 第一个汇编器是自己!将需要的功能编写为汇编代码,再手工把它转换成二进制操作码!然后通过一中实现的开关将它输入计算机,对芯片进行编程。
  2. 用这种方式编写的第一个程序是什么?一个非常简单的汇编器(因为必须手工汇编代码)!!!!!!(前人是怎么想出来的,太牛X了!!!)
三、汇编器功能的扩展

有了这个汇编器后,能做的事情慢慢就多起来了!!!

  1. 使用这个汇编器访问某种输入设备,将其从那里获得的代码汇编起来,并将结果存储在某种输出设备中。这里已经是操作系统的雏形了。
  2. 使用汇编器寻找在内存中固定位置的程序,并将输出写入存储内存中的其他固定位置。这个输出是一个支持更多功能的汇编器!!!
  3. 一直扩充汇编器的功能,直到支持整个指令集!!!
四、操作系统

三中扩充汇编器时,其实还正在开发一个监视程序(可以认为是一个非常原始的操作系统),该程序仅提供在开发的下一阶段使用到的工具所需的最低限度的服务。

  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值