# 基于16位自定义CPU架构的汇编器和虚拟机
### 一、简介
该项目由虚拟机,汇编器和测试汇编程序构成。虚拟机是设计一个16位CPU架构以及27多个机器指令,对这些指令规定其指令操作码,指令类型,操作数格式等,最终测试源码通过汇编器生成二进制可执行代码,二进制可执行代码可以在虚拟机上运行。汇编器则针对汇编指令,规定其汇编语法。然后使用flex和bison对汇编源码进行词法分析,语法分析并生成AST语树,再根据AST语法树进行语义分析,生成二进制机器代码。最终二进制代码能够在其CPU的虚拟机上成功运行。
### 二、实现的功能
本项目设计的16位CPU可支持27个指令和8个寄存器,,详细介绍如下:
寄存器:
| 寄存器 | 功能描述 |
|----------------------|--------------------------------------------|
|r0 | 通用寄存器0 |
|r1 | 通用寄存器1|
|r2 | 通用寄存器2 |
|r3 | 通用寄存器3|
|sp | 栈顶指针 |
|lr | 连接寄存器 |
|pc | 程序计数器寄存器 |
|psr | 状态寄存器 |
指令:
| 指令 | 可支持操作类型|功能描述 |实例 |
|----------------------|-------------|---------|----------------------|
| mov |RR,RI,RL | 数据传输 |RR: mov r0,r1 <br> RI: mov r0 ,#10 <br> RL: mov r0,num|
| add |RRR,RR,RI,RL | 加 | RRR: add r0 ,r1,r2 <br>RR: add r0 ,r1 <br>RI: add r0 ,#10 <br>RL: add r0,num |
| sub |RRR,RR,RI,RL | 减 | RRR: sub r0 ,r1,r2 <br>RR: sub r0 ,r1 <br>RI:sub r0 ,#10 <br>RL: sub r0,num|
| and |RRR,RR,RI,RL | 逻辑与 | RRR: and r0 ,r1,r2 <br>RR: and r0 ,r1 <br>RI: and r0 ,#10 <br>RL: and r0,num|
| or |RRR,RR,RI,RL | 逻辑或 | RRR: or r0 ,r1,r2 <br>RR: or r0 ,r1 <br>RI: or r0 ,#10 <br>RL: or r0,num|
| xor |RRR,RR,RI,RL | 逻辑异或 |RRR: xor r0 ,r1,r2 <br>RR: xor r0 ,r1 <br>RI: xor r0 ,#10 <br>RL: xor r0,num|
| cmp | | | |
| lda | | | |
| ldr | | | |
| sta | | | |
| str | | | |
| lea | | | |
| jmp | | | |
| beq | | | |
| bgt | | | |
| bne | | | |
| jz | | | |
| jnz | | | |
| blt | | | |
| call | | | |
| push | | | |
| pop | | | |
| putc | | | |
| getc | | | |
| putd | | | |
| ret | | | |
| hlt | | | |
> R:register ,I:immediate ,L:label
### 三、 软件架构
#### (二)文件架构
```
├─ Assembler 汇编器源码
├─ VirtualMachine 虚拟机源码
├─ image 图片资源
├─ test.asm 汇编测试程序
├─ test.bin 测试程序机器码文件
├─ README.md 说明文件
├─ LICENSE Apache-2.0 开源许可
```
#### (三)文件描述
| 文件 | 功能描述 |
|----------------------|--------------------------------------------|
| lexer.l | 词法分析器 |
| parser.y | 语法分析器 |
| AST.c | AVL树的实现 |
| assembler.c | 汇编器核心代码 |
| vm.c | 虚拟机核心代码 |
 
---
没有合适的资源?快使用搜索试试~ 我知道了~
C语言实现基于16位自定义CPU架构的汇编器和虚拟机,虚拟机是设计一个16位CPU架构以及27多个机器指令
共25个文件
h:7个
c:5个
md:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 74 浏览量
2024-03-22
16:45:30
上传
评论
收藏 2.9MB ZIP 举报
温馨提示
一、简介 该项目由虚拟机,汇编器和测试汇编程序构成。虚拟机是设计一个16位CPU架构以及27多个机器指令,对这些指令规定其指令操作码,指令类型,操作数格式等,最终测试源码通过汇编器生成二进制可执行代码,二进制可执行代码可以在虚拟机上运行。汇编器则针对汇编指令,规定其汇编语法。然后使用flex和bison对汇编源码进行词法分析,语法分析并生成AST语树,再根据AST语法树进行语义分析,生成二进制机器代码。最终二进制代码能够在其CPU的虚拟机上成功运行。 二、实现的功能 本项目设计的16位CPU可支持27个指令和8个寄存器 (二)文件架构 ├─ Assembler 汇编器源码 ├─ VirtualMachine 虚拟机源码 ├─ image 图片资源 ├─ test.asm 汇编测试程序 ├─ test.bin 测试程序机器码文件 ├─ README.md 说明文件
资源推荐
资源详情
资源评论
收起资源包目录
VM-master.zip (25个子文件)
VM-master
test.asm 2KB
LICENSE 1KB
test.bin 64KB
VirtualMachine
vm.c 17KB
asm.h 3KB
vm.h 993B
vm 25KB
.gitignore 430B
Assembler
makefile 637B
include
tree_visulize.h 3KB
AST.h 1KB
asm.h 3KB
assembler.h 3KB
BST.png 3.55MB
src
AST.c 5KB
parser.y 5KB
assembler.c 33KB
lexer.c 60KB
parser.c 52KB
lexer.l 5KB
parser.h 3KB
temp.dot 53KB
assembler 71KB
README.en.md 914B
README.md 4KB
共 25 条
- 1
资源评论
程序员柳
- 粉丝: 6052
- 资源: 1137
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功