-
20140805 (Assembly 함수 return 값, 인수)부산IT학원/스마트컨트롤러 2014. 8. 5. 16:19
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 로 넣기 위해서 이다.
--- ???
'부산IT학원 > 스마트컨트롤러' 카테고리의 다른 글
20140820 (PE 구조) (0) 2014.08.20 20140818 (Assembly CDECL, STDCALL, PE구조) (0) 2014.08.18 20140804 (Assembly procedure(함수 구현), call, ret, 지역변수, Entry Code, Exit Code) (0) 2014.08.04 20140801 (Assembly push, pop, pushad, popad, pushfd, popfd) (0) 2014.08.01 20140731 (Assembly loop, 배열, lea, pipe line) (0) 2014.07.31