It seems function pointers are used for executing opcodes. I am tempted to ask, wouldn't a switch statement be (at least somewhat) faster ? I base this statement on a quote I read some time ago:
[to optimize a VM] use a large switch-case instead of a table of function pointers (the compiler will optimize to a jump table, and you remove the overhead of actually calling the function)
Nevermind. It seems optimizing compilers do a very good job of reducing this overhead. For example with MSVC 2010 the generated assembly for opcode calling is: