【发布时间】:2014-02-26 03:32:02
【问题描述】:
仅使用VS2012中的反汇编窗口:
if(p == 7){
00344408 cmp dword ptr [p],7
0034440C jne main+57h (0344417h)
j = 2;
0034440E mov dword ptr [j],2
}
else{
00344415 jmp main+5Eh (034441Eh)
j = 3;
00344417 mov dword ptr [j],3
}
我说的跳转表已经实现是正确的吗?如果是这样,这是否仍然会导致 CPU 分支问题,因为程序集仍然必须执行 cmp 命令?
我正在查看 IF 语句的性能成本,并想知道编译器优化到跳转表是否意味着不再有 CPU 分支问题。
【问题讨论】:
-
我没有看到该代码中使用了任何跳转表。
标签: c performance assembly x86 cpu