私は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
)
どうもありがとうございます。