首页 > 其他分享 >CARDIAC:纸板计算教学辅助工具

CARDIAC:纸板计算教学辅助工具

时间:2024-04-04 19:33:41浏览次数:31  
标签:程序 累加器 指令 内存 辅助工具 CARDIAC 子程序 纸板

今天搜python实现模拟cpu的时候看到了这个

https://www.cs.drexel.edu/~bls96/museum/cardiac.html

kimi辅助总结

文章目录

CARDIAC:CARDboard Illustrative Aid to Computation

背景

  • 开发: CARDIAC 由 David Hagelbarger 在贝尔实验室开发,用作教学工具,帮助解释计算机工作原理,适用于获取真实计算机资源非常有限的时代。
  • 组成: CARDIAC 包括一个折叠的纸板“计算机”和一个说明书。

CARDIAC 组件

  • 架构:
    • CPU 部分: 位于左侧,包含五个滑块,用于输入卡片、累加器符号和指令数字。
    • 内存部分: 位于右侧,具有单个滑块用于输出卡片。
  • 内存: CARDIAC 拥有 100 个内存位置,每个位置可存储一个带符号的三位数。内存位置 00 和 99 具有特殊用途。
  • CPU: 单累加器、单地址机器,其算术逻辑单元(ALU)支持加法、减法和十进制移位。

指令集

  • 概述: CARDIAC 的指令集仅包含 10 条指令,每条指令由一个操作码(opcode)标识,操作码是从 0 到 9 的数字。
  • 编码: 指令是表示为三位数的非负数,其中最显著的数字是操作码。

指令

  1. INP (0): 从卡片读取到内存。
  2. CLA (1): 清除累加器并从内存加载(装载)。
  3. ADD (2): 从内存加到累加器。
  4. TAC (3): 测试累加器并条件跳转(如果为负)。
  5. SFT (4): 移位累加器。
  6. OUT (5): 将内存位置写入输出卡片。
  7. STO (6): 将累加器存储到内存。
  8. SUB (7): 从累加器减去内存。
  9. JMP (8): 跳转并保存程序计数器(PC)。
  10. HRS (9): 停止并重置。

编程技术

  • 汇编语言: CARDIAC 程序使用汇编语言格式编写,每行分为六列:地址、内容、标签、操作码、操作数和注释。
  • 间接寻址: CARDIAC 通过在指令中指定地址的方式支持间接寻址。
  • : CARDIAC 使用栈数据结构,这是一种后进先出(LIFO)的机制。
  • 子程序: CARDIAC 允许创建和使用子程序,可以是简单的或多重的,甚至可以是递归的。

子程序

  • 简单子程序: 以 JMP 指令到位置 99 结束的代码段可以作为子程序调用。
  • 多重子程序: 对于多重子程序或子程序调用另一个子程序时,需要更复杂的子程序链接机制。
  • 递归: 子程序可以调用自身,CARDIAC 通过将返回地址推入栈来支持递归。

自举启动(Bootstrapping)

  • 过程: 自举启动涉及将初始程序加载到 CARDIAC 并开始运行,利用内存位置 00 中的固定值。
  • 自举加载器: 加载器循环读取卡片到内存并执行它们,允许程序在没有手动干预的情况下加载和运行。

CARDIAC 模拟器

  • 功能: CARDIAC 模拟器允许执行 CARDIAC 代码,布局与实体 CARDIAC 不同,突出显示程序计数器指向的内存位置。
  • 控制: 模拟器包括重置、清除内存、单步执行、慢速执行、运行和停止的按钮。

程序示例

  • 从 1 到 10 计数: 一个简单的程序,打印出数字 1 到 10。
  • 列表反转: 使用栈技术反转数字列表。
  • 2 的幂: 打印出从 0 到 9 的 2 的幂。
  • 汉诺塔问题: 提供了汉诺塔问题的解决方案,这是一个递归谜题。
  • 勾股数对: 寻找满足勾股定理的三个整数集合(x^2 + y^2 = z^2)。

标签:程序,累加器,指令,内存,辅助工具,CARDIAC,子程序,纸板
From: https://blog.csdn.net/qq_52431436/article/details/137380575

相关文章

  • 3dmax效果图制作辅助工具-渲染100优化工具箱使用方法
    (1)打开渲染100官网,点击客户端下载(注:已有客户端的朋友也一定要至官网下载最新客户端,未注册用户填写邀请码1899领取渲染券)渲染100官网网址:http://www.xuanran100.com?ycode=1899(2)点击面板上的优化工具箱,如满足开启条件点击【开启工作箱】即可在3dsmax中使用。客户端点击开启......
  • HDFS辅助工具-文件归档工具archive
    HDFS辅助工具-文件归档工具archive1、背景:HDFS并不擅长存储小文件,因为每个文件最少一个block,每个block的元数据都会在NameNode占用内存如果存在大量的小文件,它们会吃掉NameNode节点的大量内存。如下所示,模拟小文件场景:2、概述:HadoopArchive可以有效的处理以上问题,它可以......
  • HDFS辅助工具-跨集群复制数据工具distcp
    HDFS辅助工具-跨集群复制数据工具distcp概述DistCp是Hadoop中的一种工具,在hadoop-tools工程下,作为独立子工程存在。定位用于数据迁移,定期在集群之间和集群内部备份数据在备份过程中,每次运行DistCP都称为一个备份周期。尽管性能相对较慢,但它的普及程度越来越高DistCp底层使用......
  • 试用AI做方案设计,通义灵码——一个博学但“健忘”的智能编码辅助工具
    最近,人工智能编程领域的创新成果层出不穷,让我这个程序员跃跃欲试。今天,我终于决定亲自体验一下阿里云研发的智能编码助手——通义灵码,在我的VisualStudioCode编辑器中成功安装了这款插件,并顺利开启了它的功能。当我打开插件对话框并输入相关的设计需求或代码问题时,只需一......
  • 开发跨境电商辅助工具,你需要用到这些代码!
    随着跨境电商的日益繁荣,越来越多的开发人员投入到这一领域,开发出各种辅助工具来提高跨境交易的效率和用户体验,本文将为你介绍在开发跨境电商辅助工具时,你需要用到的关键代码。支付接口集成在跨境电商中,支付是最核心的环节之一,为了方便用户完成支付,你需要集成的支付接口,以下是几种常......
  • 开发一个外贸辅助工具需要了解哪些代码
    随着全球化的加速,外贸行业已成为许多国家经济增长的重要引擎,然而,在外贸业务中,企业常常面临许多挑战,如语言障碍、文化差异、法律法规等。为了帮助外贸企业更好地开展业务,开发一款外贸辅助工具显得尤为重要,那么,开发一款外贸辅助工具需要了解哪些代码呢?本文将为您详细解答。一、前端......
  • Web前端开发神器WebStorm v2023.3发布——支持新的AI辅助工具
    WebStorm 是jetbrains公司旗下一款JavaScript开发工具,被广大中国JS开发者誉为"Web前端开发神器""最强大的HTML5编辑器""最智能的JavaSscriptIDE"等。与IntelliJIDEA同源,继承了IntelliJIDEA强大的JS部分的功能。WebStorm 2023.3版本对Angular、Svelte和Vue支持改进,新增AIA......
  • 外贸辅助工具开发常用代码!
    随着全球化的加速和互联网的普及,外贸行业的发展越来越繁荣,在这个行业中,开发一款高效的外贸辅助工具可以帮助企业更好地开展业务,而要开发一款实用的外贸辅助工具,了解常用的代码和框架是非常重要的。一、前端开发常用代码前端开发是外贸辅助工具开发中非常重要的一环,因为它直接决定了......
  • APP Uploader-iOS APP上架到App Store的辅助工具
    APPUploaderAPP开发助手-iOSAPP上架到AppStore的辅助工具,解决iOSAPP上架繁琐费时的情况,帮助跨平台APP开发者上架苹果应用,在没有配置Mac苹果机的情况,实现iOS证书申请,创建iOS开发者证书、iOS发布证书等各类证书,iOS开发者在Windows、Linux或Mac系统中上传IPA到AppStore,简化iOS......
  • 手把手教你如何挑选适合你的AI编程辅助工具
    ChatGPT的普及引发了对AI应用场景的探索和实践的重大变革,垂直领域专业类大模型正正在不断深化落地,其中基于大模型专注于编码的AI工具的出现显著降低了开发的复杂性,提高了开发人员的开发效率,对初级开发人员尤其有帮助。因此面对目前市面上众多优秀的AI编程辅助工具,每款产品的优劣势......