프로그래밍/프로그래밍일반 스피비 2011. 3. 15. 11:51
프로그램이 실행 될 때 메모리는 기계어 코드가 들어 있는 코드 섹션(Code Section)과 데이터를 저장하는 데이터 섹션(Data Section)으로 나뉜다. 데이터 섹션은 다시 3부분으로 나눠어 지며 전역 메모리(Global Memory)와 스택 메모리(Stack Memory), 그리고 힙 메모리(Heap Memory)가 바로 그것이다. 전역 메모리에는 모든 지역 함수(Local Function) 바깥에 선언된 변수(Global Variable)를 할당한다. 이 때 메인 함수는 운영체제가 프로그램 실행을 위해 최초로 호출하는 일종의 지역 함수로 구분된다. 스택 메모리는 함수 내에 선언된 지역 변수들을 위한 공간이다. 지역 변수는 필요한 공간의 크기를 컴파일 시에 확정한다. 함수 호출시 그에 해당하는..
프로그래밍/프로그래밍일반 스피비 2011. 3. 14. 11:12
컴파일러란? 컴파일러(compiler)란 원래 편집자.편찬자란 뜻을 가진 단어로 컴퓨터상에서 원시언어로 씌어진 고수준의 프로그래밍언어를 기계어로 번역하는 프로그램 또는 그 번역기를 말한다. 프로그래머가 .코볼(COBOL) ..포트란(FORTRAN)과 같은 고수준 언어로 쓴 프로그램을 컴퓨터가 실행할 수 있는 형태의 기계어 프로그램으로 번역하는데 사용되는 프로그램(소프트웨어)을 컴파일러라고 한다. . 컴파일러는 일반적으로 자귀해석부, 구문해석부, 최적화부, 코드생성부로 나뉘어져 그 각각을 페이즈(phase:위상)라고 하는데 실제의 컴파일러에서는 몇가지 페이즈를 패스(pass)로써 간추려 각 패스가 앞단 패스의 결과를 입력해 다음단 패스에 출력을 넘긴다고 하는 방식으로 처리된다. 그리고 복수의 패스로 된 것..
프로그래밍/프로그래밍일반 스피비 2011. 3. 14. 11:11
분할 컴파일 전에 우선 여러분이 작성한 소스파일(.c, .cpp 등 텍스트파일)을 목적파일(.obj 등 2진 파일)로 컴파일하고 여러 목적파일과 라이브러리파일을 묶어 실행파일(.exe)로 만드는 방법을 그림을 통해 알아보도록 하겠습니다. 실행 파일을 만드는 단계는 위와 같이 단계로 나누어집니다. 컴파일러는 사람이 볼 수 있는 소스파일(cpp)을 컴퓨터 프로세스가 인식할 수 있는 목적파일(obj)로 만드는 일을 합니다. 링커는 이렇게 만들어진 컴파일된 파일(목적파일, 라이브러리파일)된 파일을 하나로 묶어 실행파일(exe)로 만드는 일을 합니다. 1, 파일 분할 하기 파일을 분할하는 이유에는 여러가지가 있지만 기본적으로 얻는 이점은 아래와 같습니다. 모듈화 프로그램하기 쉽다. 코드 수정, 확장이 쉽다. 컴파..
프로그래밍/프로그래밍일반 스피비 2011. 3. 12. 13:00
0x80 을 &연산 하는 이유 가끔 소스를 보다보면 char 한개와 & 0x80 의 비트 연산을 볼수있는데, 이것이 무엇을 의미하는지 알아보자 우선 ASCII 의 경우 문자는 7bit로 구성되고 첫번째 1bit는 다른 용도로 쓰인다는 것. 즉, ASCII 문자라면 0000 0000 ~ 0111 1111 의 범위를 가진다는 것을 알수있다. 그렇다면 유니코드는 첫번째 1bit가 1의 값이 되어있을 것이란 추측이 가능하다. 그러므로 str[i] & 0x80 를 수행 한다는 것은 str[i]가 어떤 값인지는 모르지만 X??? ???? ==> str[i] & 1000 0000 ==> 0x80 ------------------------- 이와 같은 연산이 되어서 ASCII가 아닌 문자일 경우 TRUE가 되고 AS..
프로그래밍/프로그래밍일반 스피비 2011. 3. 11. 13:59
주요 연산자 우선순위 연산자 연산자의 역할 수행 방향 --------------------------------------------------------------- . Object Left -> Right -> Pointer Left -> Right [] Array Left -> Right () Function Left -> Right () 우선 순위 Left -> Right ++ 전위 증분 Left -> Right -- 전위 감량 Left -> Right sizeof Size Right -> Left ++ 후위 증분 Right -> Left -- 후위 감량 Right -> Left ~ 보수 Right -> Left ! Not Right -> Left - Unary 뺄셈 Right -> Left + ..