我们正在为高级编译语言编写一个字节码,经过一些分析和优化后,很明显当前最大的性能开销是我们用来跳转到字节码情况的switch语句.
我们调查了拉出每个case标签的地址并将其存储在字节码本身的流中,而不是我们通常打开的指令ID.如果我们这样做,我们可以跳过跳转表,并直接跳转到当前正在执行的指令的代码位置.这在GCC中非常有用,但是,MSVC似乎不支持这样的功能.
我们尝试使用内联汇编来获取标签的地址(并跳转到它们),但它可以工作,但是,使用内联汇编会导致MSVC优化器避免使用整个函数.
有没有办法让优化器仍然运行代码?遗憾的是,我们无法将内联汇编提取到另一个函数中,而不是制作标签的函数,因为即使在内联汇编中也无法为另一个函数引用标签.有什么想法或想法吗?非常感谢您的意见,谢谢!