mov [ebp+var_4], 1
mov eax, [ebp+var_4]
mov [ebp+var_8], eax
cmp [ebp+var_8], 3 ; switch 4 cases
ja short loc_40107B
mov ecx, [ebp+var_8]
jmp ds:off_40108E[ecx*4] ;这句话到底是什么意思 ecx * 4 数组么 但是为什么是乘号呢
------解决方案--------------------------------------------------------
off_40108E 处存放的是对应的各个入口地址,形成一个数组,ecx (来自 [ebp+var_8]) 就是被 switch 的变量了。
为什么要 *4 ,这是因为在 32 位环境下,一个地址也就是 32 位的,要占用 4 个字节,即 0 个地址从 0 开始的话, 1 的地址则是从 4 开始 (0,1,2,3 四个字节被 0 地址所占用),2 的从 8 ....
------解决方案--------------------------------------------------------
应该是比例因子。用于32位或32位汇编中存储器寻址。 通常是1,2,4或8