局部变量 作用域在函数内部 变量的寻址 通过esp寻址或者ebp寻址
全局变量 整个进程 通过绝对地址寻址
静态局部变量可以被多次赋值, 其值为最近一次赋值的值
但静态局部变量的初始化只能初始化一次, 如果对多次初始化,其实质也只会进行一次初始化, 因此其值也只是第一次初始化的值. 通过绝对地址寻址
static int sum = i;
00F33A1E mov eax,dword ptr ds:[00F384ECh] //记录局部静态变量是否被初始化
00F33A23 and eax,1 //结果只能为0或者1
00F33A26 jne showStatic+3Dh (0F33A3Dh) //未初始化 == 0 已初始化 == 1
00F33A28 mov eax,dword ptr ds:[00F384ECh] //更新初始化标志
00F33A2D or eax,1
00F33A30 mov dword ptr ds:[00F384ECh],eax
00F33A35 mov eax,dword ptr [i]
//赋值
00F33A38 mov dword ptr ds:[00F384E8h],eax