我正在用 go 编写一个简单的模拟器(我应该吗?或者我应该回到 c 吗?)。无论如何,我正在获取指令并对其进行解码。此时我有一个像 0x81 这样的字节,我必须执行正确的函数。
我应该有这样的东西吗
func (sys *cpu) eval() {
switch opcode {
case 0x80:
sys.add(sys.b)
case 0x81:
sys.add(sys.c)
etc
}
}
或类似的东西
var fnTable = []func(*cpu) {
0x80: func(sys *cpu) {
sys.add(sys.b)
},
0x81: func(sys *cpu) {
sys.add(sys.c)
}
}
func (sys *cpu) eval() {
return fnTable[opcode](sys)
}
1.哪个更好?
2.哪个更快?
3.我可以
声明一个内联函数吗?
4.我有一个cpu
struct
我有寄存器等。如果我有寄存器并且全部作为全局变量会更快吗?(没有struct
)
非常感谢您。