일단 문제는 + 연산에서 교환법칙이 성립하지 않는 경우를 표현하는것 입니다.  


기존 제 생각은 이렇습니다.


연산이 왼쪽에서 오른쪽으로 진행될경우


x = g_value + fun(0);

 

eax 에 g_Value 값이 저장되고 그 후에 

함수를 불러 g_Value 값이 바뀌지만 eax는 영향을 받지 않고 


add eax, 4 

하게 되어 100 +4  = 104 가 될줄 알고있었습니다.


밑에 경우는 


y = fun(0) + g_value ;


함수가 먼저 호출되어  g_value 의 값이 변하고

eax 에 함수의 리턴 값인 4가 저장되고 그 후에 


add eax, g_value 


하게 되어 4 + 1000 이어 1004 가 될줄 알고있었습니다만 ..

디스 어셈블리로 직접 관찰하니 그게 상관없이 

함수를 먼저 호출한다는것을 알게 되었습니다. 


으악!