/* symbol table test source */
////////////////////////////////////
#include<stdio.h>
#include<conio.h>
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. 변수는 12ff7c부터 시작해서 12ff78과 같이 아래로 진행된다.
tip :
a. 변수 이름은 stack 에서 변수의 값을 참조한다. ( x ->10 )
b. 변수 이름앞에 &가 있으면 Symbol Table에서 위치값을 얻어낸다. ( &x -> 0x12ff7c )
question)
// 오류의 이유?? ////////////////////////
void main()
{
int iValue;
scanf("%d" , iValue);
printf("%d",iValue);
}
analysis)
/* scanf("%d",iValue) */
iValue -> cccc cccc 을 가져오게 되며 cccc cccc위치에다 값을 쓰기 때문에
프로세스가 멈추게 된다.
올바르게 고치려면
/* scanf("%d",&iValue) */
&iValue -> 12ff7c 이므로 12ff7c 위치에 %d 형식으로 값을 저장하게 되므로 문제가 없다.
////////////////////////////////////
#include<stdio.h>
#include<conio.h>
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. 변수는 12ff7c부터 시작해서 12ff78과 같이 아래로 진행된다.
tip :
a. 변수 이름은 stack 에서 변수의 값을 참조한다. ( x ->10 )
b. 변수 이름앞에 &가 있으면 Symbol Table에서 위치값을 얻어낸다. ( &x -> 0x12ff7c )
question)
// 오류의 이유?? ////////////////////////
void main()
{
int iValue;
scanf("%d" , iValue);
printf("%d",iValue);
}
analysis)
/* scanf("%d",iValue) */
iValue -> cccc cccc 을 가져오게 되며 cccc cccc위치에다 값을 쓰기 때문에
프로세스가 멈추게 된다.
올바르게 고치려면
/* scanf("%d",&iValue) */
&iValue -> 12ff7c 이므로 12ff7c 위치에 %d 형식으로 값을 저장하게 되므로 문제가 없다.