20140805 (Assembly 함수 return 값, 인수)

117일차







---------------

Assembly

---------------




------- Procedure


--- return 비교







--- 지역 변수 선언



중복이 되므로 중복을 최대한 피해야 최적화 할 수 있다.


ESP가 88 byte만큼 움직인다. 즉,  88 byte 만큼 확보.


그런데 이상한게 int a, a0 ~ a9 까지 11개 44 byte.

int b[10] 은 40 byte  합 84 byte가 나와야 하는데 88 byte 이다.



확인한 결과 [2] -> [3]으로 바뀔 때 4 byte를 더 할당 받는다.

이유는 모르겠다.





--- 함수 호출시 인수 값을 바꾸는 asm 코드 예제 1)


iNum이란 초기화 되지 않은 변수를

smart 함수에 인수로 넣으면

초기화 시켜주는 소스.


- C 소스



- C 소스에서 호출할 asm 함수.




mov    eax ,  [ebp+8]  이 코드는

eax 가 &iNum을 가리키기 하기 위해 ebp+8을 하였다.

아래 그림을 참고.









--- 함수 호출시 인수 값을 바꾸는 asm 코드 예제 2)


현재 EAX, EBX, ECX, EDX를 출력하는 소스


- C 소스






- C 소스에서 호출할 asm 함수.



mov    eax ,  [ebp-4]

이 코드는

mov    mem ,  mem  이런 mov operand가 없기 때문에

mov    mem ,  reg 로 넣기 위해서 이다.







--- ???



설정

트랙백

댓글