当前位置: 首页 > news >正文

0320-Chip8-实现基础指令

环境

  • Time 2023-07-26
  • Zig 0.11.0-dev.4191+1bf16b172
  • SLD2 2.28.1

前言

说明

参考资料:

  1. https://en.wikipedia.org/wiki/CHIP-8
  2. https://austinmorlan.com/posts/chip8_emulator/
  3. https://rsj217.github.io/chip8-py/
  4. https://github.com/Timendus/chip8-test-suite

其中最后一个提供了测试的套件,实现的过程中,可以检测哪些指令有问题,帮助很大。

目标

实现 00E0、6xnn、Annn、1nnn 四个指令。

cpu.zig

  1. 00E0,清屏指令,之前实现屏幕的时候已经实现,直接调用方法。
  2. 1nnn,跳转指令,直接修改pc的值即可跳转。
  3. 6xnn,将 x 寄存器的值修改为 nn。
  4. Annn,将索引寄存器的值修改为 nnn。
const std = @import("std");
const Instruct = @import("instruct.zig").Instruct;
const Memory = @import("memory.zig").Memory;pub const CPU = struct {instruct: Instruct = undefined,register: [16]u8 = std.mem.zeroes([16]u8),index: u16 = 0,pc: u16,pub fn cycle(self: *CPU, memory: *Memory) void {self.fetch(memory);self.decode();self.execute(memory);}fn fetch(self: *CPU, memory: *Memory) void {var opcode = memory.load(self.pc);self.instruct = Instruct{ .opcode = opcode };self.next();}fn next(self: *CPU) void {self.pc += 2;}fn decode(self: *CPU) void {self.instruct.decode();}fn execute(self: *CPU, memory: *Memory) void {const ins = &self.instruct;var reg = &self.register;switch (ins.code) {0x0 => memory.clearScreen(),0x1 => self.pc = ins.nnn,0x6 => reg[ins.x] = ins.nn,0xA => self.index = ins.nnn,else => std.log.info("unknown opcode: 0x{X:0>4}", .{ins.opcode}),}}
};

启动

zig build run

效果

除了看到显示的窗口外,在控制台还会看到打印 0xD01F 指令未实现,也只有这一个指令未实现。

窗口

总结

实现了基础的四个 CPU 指令。

附录

http://www.jsqmd.com/news/60368/

相关文章:

  • 在天津市蓟州区老家农村盖房子,靠谱的自建房公司口碑推荐。天津市蓟州区自建房公司/机构权威测评推荐排行榜
  • 上海地标广告位公司哪家专业?核心商圈资源解析
  • 【2025最新版】Wireshark下载安装教程全流程图解:从安装到抓包分析的完整指南
  • 微信公众号编辑器推荐:高效排版,打造吸睛文章
  • 熬夜党救星!2025年12月国货次抛精华推荐,抗老提亮去黄一步到位
  • 2025留学机构排名一览表
  • 2025国内口碑好的留学中介有哪些
  • Pbootcms一级栏目下的二级三级栏目高亮(PbootCMS 一级栏目下的二级、三级栏目高亮实现方法)
  • 2025年铝合金仿古瓦厂家权威推荐榜单:西安睿驰古建为何稳居榜首?
  • 高端定制木门品牌推荐 - 2025年木门十大品牌权威榜单
  • 2025年12月婴儿抚触油品牌推荐排行榜:五款产品全面对比与选购指南
  • 2025年知名的环保胶面墙布/水洗墙布高评价厂家推荐榜
  • 2025比较好的出国留学中介机构有哪些
  • 2025年12月儿童牙膏品牌推荐排行榜:五款产品综合对比与指南
  • VSCODE 插件 rust-analyzer 使用遇到的问题 快捷键查看定义 - 实践
  • 2025北京留学中介哪些机构好
  • 2025年鞋底注塑机直销厂家权威榜单:鞋底注塑圆盘机/鞋底注塑成型机/鞋底圆盘注塑机源头厂家精选
  • 2025年简易单通道智能水肥一体机供货厂家权威推荐榜单:水肥一体化‌/一体式水肥机‌/固液两用水肥机‌源头厂家精选
  • 信创背景下,国产 DevOps 平台如何实现研运数据与办公系统无缝联动
  • 2025年中国带消毒柜集成灶十大品牌综合实力榜
  • 2025年仿古铝瓦厂家综合实力榜单:西安睿驰以创新技术引领古建新风尚
  • 防水涂料公司推荐:2025口碑好的修补防水涂料销售厂家排行榜
  • 2025年可靠的光面钢丝绳索具厂家选购指南与推荐
  • 售后服务最好的木门品牌问题 - 2025木门十大品牌售后服务排名榜单
  • 202510家郑州留学中介的反馈
  • 2025年12月儿童牙膏品牌推荐排行榜:五款产品综合对比与选购指南
  • 2025郑州留学机构十强有哪些
  • PbootCMS如何在网站管理后台增加点击数自定义修改功能(PbootCMS 后台增加点击数自定义修改功能的方法)
  • 2025全国十大出国留学中介排名
  • 2025年耐用的混凝土水沟滑模机/梯形排水沟滑模机厂家推荐及选择指南