부산IT학원/스마트컨트롤러
20140805 (Assembly 함수 return 값, 인수)
EHOzlO
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 로 넣기 위해서 이다.
--- ???