【MARIE】嵌入式系统设计半期报告:MARIE模拟器的使用

1.模拟器介绍

1.1 体系结构

MARIE ('Machine Architecture that is Really Intuitive and Easy') 是一种机器架构和汇编语言。发布者还为机器提供了一组用 Java 编写的模拟器程序。MARIE.js 是 MARIE 的 JavaScript 版本实现。它旨在尽可能忠实于原始 Java 程序,同时改进功能以使概念更直观、更易于理解。

MARIE是冯·诺依曼架构的简单实现,如下图所示:

图1 MARIE体系结构

汇编语言是从机器语言(即二进制代码)中抽象出来的最低级别的语言。每条指令对应于它的二进制表示。有几种汇编语言,每种汇编语言对应一种机器架构。更为熟悉的架构如 x86、 ARM 和 MIPS ,它们都相当复杂,而 MARIE 设计得更容易理解。

MARIE架构有7个寄存器,分别是:

  1. AC (Accumulator):通用寄存器、累加器,用于保存中间数据、运算结果。
  2. PC (Program Counter):程序计数器,指向内存中下一条要执行的指令。
  3. MAR (Memory Access Register):内存访问寄存器,与地址线相连,用于保存数据或指令的地址。
  4. MBR (Memory Buffer Register):内存缓冲寄存器,与数据线相连,在将数据传输到内存或从内存取数据时存储数据。
  5. IR (Instruction Register):指令寄存器,存放当前在执行的指令。
  6. Out、In寄存器:输出、输入寄存器,I/O时会使用这两个寄存器。

MAR和PC因为和内存地址交互,只有12位,其余5个寄存器均为16位。存储器按字编址,容量为4K字。

1.2 主要指令集

在 MARIE 中,每条指令长16位,前4位代表操作码,其余12位代表地址。以下是常用的指令(并非全部)的表格:

指令

操作码

简述

Add X

3

地址X的内容与AC相加,结果保存到AC中

Subt X

4

AC减去地址X的内容,结果保存到AC中

Addl X

B

将X作为操作数的指针,与AC相加,并保存到AC中

Clear

A

将AC清零

表1 算术运算指令

指令

操作码

简述

Load X

1

从内存地址X中取数存到AC

Store X

2

将AC的值存入地址为X的内存中

Loadl X

D

将X处存储的内容作为指针,获取操作数存入AC

Storel X

E

将X处存储的内容作为指针,将AC的值存入指向的内存

表2 数据传送指令

指令

操作码

简述

Input

5

要求用户输入一个值,存入AC

Output

6

将AC的值输出

表3 输入输出指令

指令

操作码

简述

Jump X

9

跳转到地址X

Skipcond(C)

8

通过判断AC和C的值,选择是否跳过下一条语句的执行

跳转条件:

C=000&&AC<0

C=400&&AC=0

C=800&&AC>0

Halt

7

终止程序

表4 控制、分支指令

报告下载:

https://download.csdn.net/download/qq_61814350/89291081

参考文章:

 https://blog.csdn.net/Ying_Lang/article/details/123637858

marie模拟器官网: 

 https://marie.js.org/

 官方参考文档:

https://github.com/MARIE-js/MARIE.js/wiki

  • 8
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guts350

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值