【发布时间】:2019-04-21 20:58:04
【问题描述】:
我正在尝试用 Ruby 制作一个 Chip-8 模拟器,就像我的朋友以前用 C++ 做过的那样,但我偶然发现了一些问题,请注意,我对 Ruby 只了解一些,我认为这个项目会是提高我这门语言技能的好方法。
我读过 Marshal 类,但我不知道如何使用它。 http://hackage.haskell.org/package/ruby-marshal-0.1.2/docs/Data-Ruby-Marshal-Int.html
所以基本上芯片 8 操作码是 int16 的,但我需要获取指令的低位和最高位,以便正确解释它。在 C++ 中,他使用 union 和基本的 int 数据类型,如下所示
struct Instruction {
union {
uint16_t opcode;
struct {
uint8_t lower;
uint8_t upper;
} bytes;
};
如何模仿特定的 uint8_t 和 uint16_t 类型?我不介意工会不得不将工会换成其他东西。
这也是使用和管理内存的最佳方式吗?我实际上不知道下面的代码是否正确并且会编译,因为我只能访问记事本 atm
class Memory
@memory = Hash.new(Array.new)
@memory[:system] = Array.new(0x200, 0)
@memory[:rom] = Array.new(0xCA0, 0)
@memory[:internal] = Array.new(0x5F, 0)
@memory[:refresher] = Array.new(0xF0, 0)
@stack = Array.new(0) #Gotta stick with push/pop
end
class Chip8
def initialize
@memory = Memory.new
【问题讨论】: