我处于两难境地,VM循环的性能更高的选项是什么:
选项 1 - 对指令函数强制内联,使用计算的 goto 进行 switch 来调用该标签上的指令(有效内联代码)......或者......
选项 2 - 使用函数指针的查找数组,每个指针指向一个fastcall
函数,并且指令确定索引。
基本上,更好的是带有跳转地址和内联代码的查找表或带有fastcall
函数地址的查找表。是的,我知道,两者实际上都只是内存地址并且来回跳转,但我认为fastcall
如果寄存器空间不足,即使强制使用寄存器作为参数,仍然可能导致一些数据被压入堆栈。
编译器是 GCC。