计算机系统要素,从零开始构建现代计算机(nand2tetris)
如果完成了本书所有的项目 你将会获得以下成就

  • 构建出一台计算机(在模拟器上运行)
  • 实现一门语言和相应的语言标准库
  • 实现一个简单的编译器

而且,这本书的门槛非常低,只要你能熟练运用一门编程语言即可。本课程综合了数字电路,计算机组成原理,计算机体系架构,操作系统,编译原理,数据结构等的主要内容,搭建了计算机平台的构建的框架,并未深入细节,如果需要了解细节,可由本书作为主线,逐步完善的知识体系。

QQ交流群(含资料):39014053
课程连接
项目地址Github


本章要实现的内容

详细内容

对于本项目而言,最困难的就是允许汇编程序使用符号来指代内存地址。 而允许汇编程序使用符号来指代内存地址却又是方便编程,提高程序可读性的一种重要的方法。而由于符号化汇编命令与其对应的二进制代码之间的关系是很简单的,所以编写汇编编译器并非是很难的任务。汇编编译器的功能并不复杂,汇编编译器对每个汇编命令的所有部分进行解析,将每个部分翻译成它对应的二进制码,并将生成的二进制码汇编成真正能被硬件执行的二进制指令。
这里给出了一种可行的实现方案: 这里提出一个基于4个模块的汇编编译器的实现:语法分析器模块用来对输入文件进行语法分析;编码模块用来提供所有汇编命令所对应的二进制代码;符号表模块用来处理符号;另外还有一个主程序用来驱动整个编译过程。

  • Parser(语法分析器模块):本模块主要做的就是对命令进行获取,进行类型判断,获取符号(预定义符号,标记命令,变量)
  • Code(编码模块):将Hack汇编语言助记符翻译成二进制码。
  • 符号表模块:符号表用于建立和维持符号与其地址之间的关联。常用的有哈希表。
  • 无符号程序的汇编编译器:这种情况意味着不用处理符号,所以只有两个阶段,第一阶段翻译无符号汇编程序,然后将其扩展成具有符号处理能力的汇编编译器。
  • 有符号程序的汇编编译器:使用两次读取代码的方式来实现,第一遍构建符号表,但不翻译程序;第二遍翻译程序,并把符号变成地址。

具体的实现参考课程或者是课本。


计算机要素--第六章 汇编编译器相关推荐

  1. 《计算机系统要素》 第六章 汇编编译器

    6.1 背景知识 符号化的语言称为汇编,翻译程序称为汇编编译器,汇编编译器对每个汇编命令的所有部分进行解析,将每个部分翻译成它对应的二进制码,并将生成的二进制码汇编成真正能被硬件执行的二进制指令. 编 ...

  2. 计算机组成原理的中央控制器,计算机组成原理第六章中央控制器(6-7,8,9).pdf

    <计算机组成与结构> --本科生课程教学 计算机学院(许先斌) 计算机学院(许先斌) xbxu@whu.edu.cn xbxu@whu.edu.cn 计算机组成与结构 计算机组成与结构 本 ...

  3. 计算机组成原理唐朔飞课后答案第六章,计算机组成原理第六章部分课后题答案(唐朔飞版)...

    计算机组成原理第六章部分课后题答案(唐朔飞版) 6.4 设机器数字‎长为8位(含1位符号‎位在内),写出对应下‎列各真值的‎原码.补码和反码‎. -13/64,29/128,100,-87 解:十进制 ...

  4. 计量经济学第六版计算机答案,伍德里奇计量经济学导论计算机习题第六章第13题c_6.13...

    伍德里奇计量经济学导论计算机习题第六章第13题,答案和MATLAB代码 clear,clc; % c6.13 by % 打开文字文件和数据文件 importdata('meap00_01.des'); ...

  5. 计算机图形学 第六章 图形变换

    计算机图形学 第六章 图形变换 这章一般只考一道题(10分左右) 数学基础 (都是线性代数的知识,这里略写) 齐次坐标: 将一个原本是 nnn 维的向量用一个 n+1n+1n+1 维向量来表示 如 ( ...

  6. 大学计算机基础试题第六章,大学计算机基础第六章.doc

    大学计算机基础第六章.doc (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 <大学计算机基础>第6章作业-.单选题(每小 ...

  7. 合工大计算机组成原理ppt,合工大考研课件计算机组成原理第六章

    计算机组成 第六章计算机的运算方法 系统结构研究所2 Contents 无符号数和有符号数6.1数的定点表示和浮点表示6.2定点运算6.3浮点四则运算6.4 算术逻辑单元 6.5 系统结构研究所 3 ...

  8. 计算机系统要素--第六章,01-HACK汇编编译器模块介绍

    从零开始构建现代计算机--第六章,01-HACK汇编编译器模块介绍 语法分析器(Parser) 编码(Code) 无符号程序的汇编编译器 符号表(Symbol Table) 有符号程序的汇编编译器 H ...

  9. 计算机系统要素--第六章,02-HACK汇编编译器实现

    从零开始构建现代计算机--第六章,02-HACK汇编编译器实现 要点 A-指令 C-指令 符号表 python实现 要点 关心三点: A指令,C指令,符号表 A-指令 A指令:将@num的num转为1 ...

最新文章

  1. python库缺少pkg_resource_ImportError: No module named pkg_resources解决方案
  2. ​Java 中的内存溢出和内存泄露是什么?我给你举个有味道的例子​
  3. 百度最早量产?一图看全球公司无人驾驶汽车时间表
  4. javascript—闭包
  5. boost::mpl模块实现insert_range相关的测试程序
  6. dfinity什么时候发币_区块链3.0的Dfinity揭秘
  7. mac 通过 homebrew 安装mongodb
  8. python3 asyncio 爬虫_python3 asyncio异步新浪微博爬虫WeiboSpider
  9. 通过FD耗尽实验谈谈使用HttpClient的正确姿势
  10. Navicat连接mysql8.0.1版本出现1251--Client
  11. 把实体 转为json 数据格式---jackson 的详细用法.
  12. 部分美团用户被取消支付宝支付;腾讯成全球市值最高社交媒体公司;微软首次公布GitHub产品路线图 | 极客头条
  13. [转]网络性能评估工具Iperf详解(可测丢包率)
  14. 实现手机访问网站时点击手机号码直接拨打电话的功能
  15. ubuntu下安装tftp
  16. html滚动字幕上下,div css里文字上下滚动的代码怎么写
  17. Oracle中表pagesize,Oracle使用pagesize命令
  18. 用免费WiFi上网软件有什么好处
  19. python上传百度云_python通过百度云api的方式上传或下载文件
  20. docker 安装 Nginx 并配置反向代理

热门文章

  1. SOTA到底是什么算法
  2. lg手机显示无服务器,LG手机工程模式进入方法及菜单指令翻译(适用G6、G7、V20、V30等)...
  3. oracle pivot使用方法,Oracle Pivot简单用法
  4. TTO热转印打码机色带的故障与维护技巧
  5. 已知协方差矩阵求相关矩阵matlab,已知协方差矩阵求相关矩阵
  6. C语言10以内加法口诀表,10以内加减法口诀表可打印.doc
  7. 爬取腾讯视频 xpath方式
  8. 计算机网络复习zucc
  9. 路人超能100手游如何用电脑玩 路人超能100PC电脑版玩法教程
  10. php 表情 代码_PHP 大量QQ表情代码替换