我有以下代码可以在PC(x86)上模拟基本系统:

typedef void (*op_fn) ();

void add()
{
   //add Opcode
   //fetch next opcode
   opcodes[opcode]();
}

void nop()
{
   //NOP opcode
   //fetch next opcode
   opcodes[opcode]();
}

const op_fn opcodes[256] =
{
    add,
    nop,
    etc...
};

我通过opcodes[opcode]()将此表称为“表格”
我正在努力提高口译员的表现。
内联每个函数,例如
inline void add()
inline void nop()

这样做有什么好处吗?

无论如何,它可以使速度更快吗?
谢谢

最佳答案

仅仅因为您将方法标记为inline,就不需要编译器这样做-它更像是提示而不是命令。

假设您将操作码处理程序存储在数组中,则编译器将需要将函数的地址放入数组中,因此无法内联它。

您的方法实际上没有错。如果您确实认为自己遇到了性能问题,请获取一些指标,否则不要担心(此时!)。函数指针表的概念并不是什么新鲜事物-实际上,这是C++实现虚拟函数(即vtable)的方式。

09-11 19:47