看到大家组织民间的开源大赛,我也就花几个小时写点小玩意来给大家参考参考。
做了一个顺序执行(SEQ)处理器的虚拟机,暂且实现了Y86指令集基础命令的执行。
首先是Y86指令集的相关二进制定义:
可以看到,这是一个非常精简的指令集,只有:
halt(结束执行)、nop(空指令)、cmovXX(条件赋值)、irmovl(立即数赋值寄存器)、rmmovl(寄存器数据写道内存)、mrmovl(内存数据读到寄存器)、OPL(基本运算,包括加减、异或、其运算)、jXX(跳转语句)、call(调用指令)、ret(返回指令)、pushl(寄存器压栈)和popl(寄存器出栈)。
不够基本够用了。
寄存器信息如下:
为了防止不够用,我还特意加上了r8~r14共七个通用寄存器。
整个处理器虚拟机的设计严格按照Fetch(取指令)->Decode(解码,看需要使用哪些寄存器)->Execute(ALU单元执行计算阶段)->Memory(写回内存)->Write back(写回寄存器)->Program Counter Update(更新指令当前的PC)。
如果大家看不懂这些阶段是干了些什么,可以看下面两条指令的执行流程:
Call指令:
OPL指令:
这个SEQ处理器的虚拟机就很好实现了(内存部分就随便用数组映射一下吧):
程序中给了一个数组求和的DEMO:
速度大概是系统指令执行速度的1/60,没什么优化。
如果大佬有兴趣可以有将其改进成流水线式的,应该会好很多。
相关文章
- 1 女子西藏旅途偶遇28岁骑行“大叔”
- 2 中甲联赛大连一赛场发生球员暴力事件
- 3 某网红下播时忘记关摄像头,直播间瞬间炸了
- 4 伪娘穿裙子跳舞看起来超级辣眼睛
- 5 棺材惊现巨蟒,尸体被蛇吃了骨头都不剩!
- 6 上海路炒粉、江一烧饼店事件吸引一波波流量
- 7 滴滴司机遇上性感美女打车,下一秒却立马请她下车!
- 8 胖猫跳江去世,5个意想不到
- 9 迈腾车主刚离家出门半小时就被绿,女友带其他男人回家
- 10 日本男子花百万日元将自己变成狗
- 11 真正的调整显示器亮度
- 12 PGE游戏引擎FC快打旋风
- 13 易语言Julia集图片源码
- 14 易语言ChartV1.0模块源码
- 15 易语言OFFICE文档转换成PDF源码
- 16 易语言网络电视源码
- 17 易语言SQLite3数据库操作类模块源码
- 18 易语言ICO提取工具源码
- 19 易语言程序备份器源码
- 20 模仿QQ游戏登陆界面
-
扫码下载安卓APP
-
微信扫一扫关注我们
微信扫一扫打开小程序
手Q扫一扫打开小程序
-
返回顶部
发表评论