从零开始构建现代计算机--第六章,02-HACK汇编编译器实现

  • 要点
    • A-指令
    • C-指令
    • 符号表
  • python实现

要点

关心三点:
A指令,C指令,符号表

A-指令

A指令:将@num的num转为16位的二进制数即可

C-指令

C指令:分成四部分,固定的开头"111"(C指令标志),comp域(执行什么运算),dest域(计算结果的输出位置),jump域(是否跳转)

符号表

符号表保存的有编译器预定义的符号,以及汇编代码中自定义的标签和变量的地址

  1. 预定义符号:符号表初始化就添加

  2. 自定义标签和变量
    标签的entry在第一趟添加到符号表中
    变量的entry在第二趟添加到符号表中,变量定义就是在符号表中建立一个entry,这就是为什么变量的定义要先于它的使用

标签涉及控制流程,用来进行地址跳转, 是A指令,
标签定义如(LOOP),用法是@LOOP
第一趟遇到(LOOP)要将标签加入符号表中,加的entry是下一条指令的位置,
第二趟忽略(LOOP),遇到@LOOP时取出entry,转为二进制数即是A指令的汇编代码

python实现

可以参考github上一个哥们的python代码
这份代码不是可重定位的,因为变量分配的起始地址固定为了16

计算机系统要素--第六章,02-HACK汇编编译器实现相关推荐

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

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

  2. c语言实现HACK汇编编译器(一)

    汇编编译器: 汇编程序在被计算机执行之前,必须被翻译成计算机的二进制语言.翻译任务是由汇编编译器来完成的.汇编编译器的输入是一串汇编命令,然后产生一串等价的二进制指令作为输出.生成的代码被加载到计算机 ...

  3. 计算机要素--第六章 汇编编译器

    计算机系统要素,从零开始构建现代计算机(nand2tetris) 如果完成了本书所有的项目 你将会获得以下成就 构建出一台计算机(在模拟器上运行) 实现一门语言和相应的语言标准库 实现一个简单的编译器 ...

  4. 计算机系统导论第六章答案,《计算机系统概论》-第4章-习题答案

    写出冯·诺依曼模型的5个组成部分,并写出各个部件的功能和目的. 输入设备:输入数据 输出设备:输出结果 控制器:控制程序执行 内存:存放程序(各类运行指令) 处理器:对数据进行处理和运算git 简要描 ...

  5. 计算机系统基础(六)之RISC-V汇编

    文章目录 前言 一.RISC-V汇编语言简介 汇编语言的优缺点 二.汇编语言语法介绍 三.RISC-V汇编指令总览 RISC-V 汇编指令操作对象 RISC-V 汇编指令分类 RISC-V 汇编伪指令 ...

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

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

  7. 计算机系统要素:第六章 Part2 汇编编译器(symbol)

    要给汇编编译器加入符号,首先要明确这个汇编编译器有哪些符号: 预定义符号:SP,LCL等,这些符号预先就在SymbleTable中定义好了对应内存的地址 变量variables:注意,变量是在第二遍读 ...

  8. 微型计算机系统与接口重要吗,微型计算机系统与接口 马宏锋 等编著 第六章

    微型计算机系统与接口 马宏锋 等编著 第六章 (67页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.90 积分 6.1 输入/输出接口概述 内容简介6 ...

  9. 深入理解计算机系统——第六章 The Memory Hierarchy

    深入理解计算机系统--第六章 The Memory Hierarchy 6.1 Storage Technologies 6.1.1 Random Access Memory Nonvolatile ...

最新文章

  1. php 数组存入mysql_PHP将数组存入数据库中的四种方式
  2. mysql 高可用工具_MySQL Utilities 高可用工具体验
  3. 怎样实现WPF Prism Module的国际化和本地化?
  4. 亚信安全发布“安全定义边界”2020发展理念 赋能企业在5G时代的数字化安全运营能力
  5. 规范化编程:ANSI和UNICODE的使用
  6. 【git clone 报错】fatal: unable to access ‘https://github.com/zimeng303/React.git/‘: Failed to connect
  7. 人脸检测江湖的那些事儿——从旷视说起
  8. iPhone SE 3渲染图曝光:还是熟悉的味道
  9. 手写 Promise.all
  10. tomcat运行出现问题(Starting Tomcat v8.0 Server at localhost' has encountered a problem.)
  11. 同心抗疫,IBM中国有限公司致客户的一封信
  12. C语言相反次序重新排序
  13. 图像滤镜实现万能方法研究
  14. 计算机网络第五章课后答案第七版(谢希仁著)
  15. c语言更正错误,c语言出错invalid operands to binary %
  16. 凸优化理论(一)数学优化问题的分类
  17. ssm教务系统网站 毕业设计-附源码290915
  18. 益聚星荣:如何有理有据地给元宇宙泼一盆冷水?
  19. SPS PDSCH的HARQ反馈
  20. poj 1583 Choose Your Words Carefully

热门文章

  1. 正则^[a-zA-Z\d]+$
  2. Keil5添加STM32芯片包
  3. 通过u盘启动计算机使用ghost安装系统步骤,一键Ghost U盘版安装使用图文教程
  4. 夏日炎炎,使用决策树去挑选西瓜(python实现)
  5. ROS kinetic 机器视觉
  6. 应用启动失败,因为没有QT平台可以初始化
  7. 华硕win10键盘失灵_win10系统下电脑键盘失灵怎么解决
  8. java实现端口映射_Java BIO实现TCP端口转发(端口映射)功能源码
  9. Windows 隐藏小电影?
  10. 看电影用这个小程序,爆米花钱肯定给你省出来!