프로그래밍/프로그래밍일반 스피비 2011. 3. 20. 22:21
이글을 보기전에 스택프레임에대해서 공부하세요 ㅎㅎ 2011/03/20 - [프로그래밍/프로그래밍일반] - 스택프레임 호출 규약 앞 항에서 Add 함수의 어셈블리 코드를 통해 스택 프레임의 실제 모양을 확인해 보았다. 인수는 뒤쪽부터 순서대로 전달하며 인수 전달에 사용한 스택 영역은 호출원이 정리했는데 이는 C/C++ 언어의 기본 호출 규약인 __cdecl의 스택 프레임 모양일 뿐이다. 호출 규약이 바뀌면 스택 프레임의 모양과 관리 방법도 달라질 수 있다. 호출 규약은 호출원과 함수간의 약속이므로 양쪽이 다른 형태로 약속을 할 수도 있는 것이다. 그렇다면 __cdecl이 아닌 다른 호출 규약은 어떻게 스택 프레임을 작성하는지 차이점을 분석해 보자. 호출 규약에 따라 인수를 전달하는 방법과 스택의 정리 ..
프로그래밍/프로그래밍일반 스피비 2011. 3. 20. 22:10
혼연보다가 스택프레임이란 부분을 읽고 까먹지말아야지 하면서 서치해서 글좀 퍼왔음!! 스택프레임: 함수가 호출될 떄 스택에는 함수로 전달되는 인수, 실행을 마치고 돌아올 복귀 번지, 지역변수 등의 정보들이 저장된다. 스택에 저장되는 함수의 호출 정보를 스택 프레임이라고한다. 컴퓨터 메모리는 코드, 스택, 힙 영역으로 나누어 지는 것을 알고 계실 겁니다. 여기서 우리가 보고자 하는 부분이 스택 영역 이며,이는 함수를 호출하게 될 시 이용되지요. 다음 소스를 보도록 하죠. void function() {} void main() { function(); } 매우 간단하게 짜 보았습니다. main() 함수에서 function 함수를 호출하지요. 하는 일은 아무것도 없습니다. 하지만, 메모리 상에서는 main 함수..
프로그래밍/프로그래밍일반 스피비 2011. 3. 17. 21:09
나의 VS 디버그 하는 법 *들어가기전에.. 이 글을 쓰면서 많이 생각해 봤습니다. 사실 제가 알고 있는 Debug는 방법은 누구에게 배운것도 또 인터넷에서 찾아서 본 것도 아닌그냥 물 흐르듯 자연스럽게 터득한 내용이기 때문에 실무에서 일하시는 분들이나 많이 아시는 분이 보신다면 잘못된 Debug방법이거나 웃긴 방법일수도 있다고 밝혀드립니다. n 단축키 *F5: 디버그 모드 빌드 단축키 (보통 많이 할거라고 생각되는 Ctrl+F5는 Debug를 하지 않고 실행 빌드이다.) *F9: 중단점 설정 Hit : *디버그모드실행중 F5 : 중단점 위치에서 다음 중단점까지 실행해준다. *F10 : 해당 줄의 다음 줄을 실행해 준다. *F11 : 해당줄이 함수같이 다른 곳을 가는 프로그래밍경우 그 안으로 이동해 실행..
프로그래밍/프로그래밍일반 스피비 2011. 3. 16. 15:53
( 제대로 된 )프로그래밍 관련 책을 보면 보통 말머리에 이 인자와 매개 형식 변수의 차이 점에 대해 반드시 언급한다. 비록 아주 기초적인 부분이지만 그 만큼 중요한 개념이란거다. 정리 들어간다. 인자( Argument ) 는 어떤 함수를 호출시에 전달돼는 값을 말하고 매개 형식 변수( Parameter ) 는 그 전달된 인자를 받아들이는 변수다. 여기서 포인트는 인자는 값, 매개 형식 변수는 말 그대로 변수라는 점이다. 예를 들면 이런거지. void Func( int A ) { int B = 0; printf("%d\n",A); } int main( int argc, char* argv[] ) { int MyAge = 31; Func( MyAge ); } 여기서 인자는 Func() 함수를 호출할때 전달..
프로그래밍/프로그래밍일반 스피비 2011. 3. 15. 12:05
자료형 키워드 메모리 크기 값의 범위 문자형 char 1 Bytes -128~127 정수형 short 2 Bytes -32,768~32,767 int 4 Bytes -2,147,483,648 ~ 2,147,438,647 long 4 Bytes -2,147,483,648 ~2.147.483.647 부호없는 문자형 unsigned char 1 Bytes 0~255 부호없는 정수형 unsigned short 2 Bytes 0~65,535 unsigned int 4 Bytes 0~4,294,967,295 unsigned long 4 Bytes 0~4,294,967,295 부동 소수형 float 4 Bytes 1.2E-38~3.4E38 double 8 Bytes 2.2E-308~1.8E308 void형 void ..