Stack 3

Call by address

포인터를 사용하는 이유에는 2가지가 있다. 첫째. Call by Address C언어는 Call by Value 만을 지원한다. 이때문에 함수에서 여러개의 값을 조작하여 리턴받기 위해서는 주소를 파마미터로 넘겨 여러개의 값을 조작할 수 있다. ex ) swap() ///////////////////////////////////////////// #include void swap(int* pa , int* pb) { int temp = *pa; *pa = *pb; *pb = temp; } void main() { int a=10 , b=20; printf("a=%d , b=%d\n",a,b); swap(&a , &b); printf("a=%d , b=%d\n",a,b); } /////////////////..

SymbolTable

/* symbol table test source */ //////////////////////////////////// #include #include void main() { int x; int y; int z; x = 10; y = 20; z = x+y; printf("%d + %d = %d\n", x,y,z); getch(); } //////////////////////////////////// # SP : (stack pointer Register) : SP는 push, pop명령에 의하여 위치값이 변경되므로 변수의 위치는 ebp 레지스터를 이용한다. 1. 선언문에 선언된 변수의 정보는 Symbol Table 에 등록된다. 2. Symbol Table은 각종 정보를 저장하고 있다. 3. 변수는 ..

STACK

가상 메모리 /* STACK 공간의 특징 ************************************************************ 1. main() 에서 사용하는 statck Memory 는 일반적으로 0x0012ff7c 이다. 2. 기본적으로 1M이다. (시스템은 Thread당 1M의 Stack Memory를 할당한다. 그러나 실제로 프로그램에서 사용할 수 있는 statck memory는 이것보다는 작다.) 3. CCCC CCCC으로 자동 초기화 된다. (함수에서 사용하는 메모리 +40h 만큼을 CCCC CCCC으로 초기화 한다.) *********************************************************************************/