я пишу простой эмулятор в ходу (должен ли я? или мне вернуться к 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
)
большое спасибо.