我正在尝试最大程度地优化一个分支(类似 switch...case),以在 x86 CPU 上模拟 X CPU。我想到了这一点:在内存中,我将加载固定长度为 0x100 字节的 x86 操作码块,如下所示:
first block
0
...[my code, jump at 0x10000, nop nop nop until 0x9F...]
0x9F
second block
0x100
...
019F
third block
0x200
...
0x29F
...
etc, etc
...
0x10000
这将是有限的,从内存 $0(+ 可能是一些偏移量)开始并以 $0xFFFF 结束(如 0x10000 大小的“rom”)。现在,每次获取和模拟 X CPU 操作码时,我都会这样做:将其左移 8 位并跳转到该位置。执行此操作,并正常继续我的程序流程。我的问题是:1)这些操作码块是否可能如此紧密?2)这是过去的普遍做法吗?