计算机系统要素--第六章,02-HACK汇编编译器实现
从零开始构建现代计算机--第六章,02-HACK汇编编译器实现
- 要点
- A-指令
- C-指令
- 符号表
- python实现
要点
关心三点:
A指令,C指令,符号表
A-指令
A指令:将@num的num转为16位的二进制数即可
C-指令
C指令:分成四部分,固定的开头"111"(C指令标志),comp域(执行什么运算),dest域(计算结果的输出位置),jump域(是否跳转)
符号表
符号表保存的有编译器预定义的符号,以及汇编代码中自定义的标签和变量的地址
预定义符号:符号表初始化就添加
自定义标签和变量
标签的entry在第一趟添加到符号表中
变量的entry在第二趟添加到符号表中,变量定义就是在符号表中建立一个entry,这就是为什么变量的定义要先于它的使用
标签涉及控制流程,用来进行地址跳转, 是A指令,
标签定义如(LOOP),用法是@LOOP
第一趟遇到(LOOP)要将标签加入符号表中,加的entry是下一条指令的位置,
第二趟忽略(LOOP),遇到@LOOP时取出entry,转为二进制数即是A指令的汇编代码
python实现
可以参考github上一个哥们的python代码
这份代码不是可重定位的,因为变量分配的起始地址固定为了16
计算机系统要素--第六章,02-HACK汇编编译器实现相关推荐
- 计算机系统要素--第六章,01-HACK汇编编译器模块介绍
从零开始构建现代计算机--第六章,01-HACK汇编编译器模块介绍 语法分析器(Parser) 编码(Code) 无符号程序的汇编编译器 符号表(Symbol Table) 有符号程序的汇编编译器 H ...
- c语言实现HACK汇编编译器(一)
汇编编译器: 汇编程序在被计算机执行之前,必须被翻译成计算机的二进制语言.翻译任务是由汇编编译器来完成的.汇编编译器的输入是一串汇编命令,然后产生一串等价的二进制指令作为输出.生成的代码被加载到计算机 ...
- 计算机要素--第六章 汇编编译器
计算机系统要素,从零开始构建现代计算机(nand2tetris) 如果完成了本书所有的项目 你将会获得以下成就 构建出一台计算机(在模拟器上运行) 实现一门语言和相应的语言标准库 实现一个简单的编译器 ...
- 计算机系统导论第六章答案,《计算机系统概论》-第4章-习题答案
写出冯·诺依曼模型的5个组成部分,并写出各个部件的功能和目的. 输入设备:输入数据 输出设备:输出结果 控制器:控制程序执行 内存:存放程序(各类运行指令) 处理器:对数据进行处理和运算git 简要描 ...
- 计算机系统基础(六)之RISC-V汇编
文章目录 前言 一.RISC-V汇编语言简介 汇编语言的优缺点 二.汇编语言语法介绍 三.RISC-V汇编指令总览 RISC-V 汇编指令操作对象 RISC-V 汇编指令分类 RISC-V 汇编伪指令 ...
- 《计算机系统要素》 第六章 汇编编译器
6.1 背景知识 符号化的语言称为汇编,翻译程序称为汇编编译器,汇编编译器对每个汇编命令的所有部分进行解析,将每个部分翻译成它对应的二进制码,并将生成的二进制码汇编成真正能被硬件执行的二进制指令. 编 ...
- 计算机系统要素:第六章 Part2 汇编编译器(symbol)
要给汇编编译器加入符号,首先要明确这个汇编编译器有哪些符号: 预定义符号:SP,LCL等,这些符号预先就在SymbleTable中定义好了对应内存的地址 变量variables:注意,变量是在第二遍读 ...
- 微型计算机系统与接口重要吗,微型计算机系统与接口 马宏锋 等编著 第六章
微型计算机系统与接口 马宏锋 等编著 第六章 (67页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 6.1 输入/输出接口概述 内容简介6 ...
- 深入理解计算机系统——第六章 The Memory Hierarchy
深入理解计算机系统--第六章 The Memory Hierarchy 6.1 Storage Technologies 6.1.1 Random Access Memory Nonvolatile ...
最新文章
- php 数组存入mysql_PHP将数组存入数据库中的四种方式
- mysql 高可用工具_MySQL Utilities 高可用工具体验
- 怎样实现WPF Prism Module的国际化和本地化?
- 亚信安全发布“安全定义边界”2020发展理念 赋能企业在5G时代的数字化安全运营能力
- 规范化编程:ANSI和UNICODE的使用
- 【git clone 报错】fatal: unable to access ‘https://github.com/zimeng303/React.git/‘: Failed to connect
- 人脸检测江湖的那些事儿——从旷视说起
- iPhone SE 3渲染图曝光:还是熟悉的味道
- 手写 Promise.all
- tomcat运行出现问题(Starting Tomcat v8.0 Server at localhost' has encountered a problem.)
- 同心抗疫,IBM中国有限公司致客户的一封信
- C语言相反次序重新排序
- 图像滤镜实现万能方法研究
- 计算机网络第五章课后答案第七版(谢希仁著)
- c语言更正错误,c语言出错invalid operands to binary %
- 凸优化理论(一)数学优化问题的分类
- ssm教务系统网站 毕业设计-附源码290915
- 益聚星荣:如何有理有据地给元宇宙泼一盆冷水?
- SPS PDSCH的HARQ反馈
- poj 1583 Choose Your Words Carefully