목록전체 글 (67)
코가손의 블로그
지역 변수 지역 변수는 블록 스코프(영역)가 있고 블록이 소멸되면 따라 소멸되는 자동 주기를 가지고 있다. 전역 변수 함수 외부에서 정의된 변수를 전역 변수라고 한다. 전역변수는 정적 주기로, 프로그램이 시작할 때 생성되고 프로그램이 종료할 때 파괴된다(메모리->데이터 영역) 이것은 전역 변수가 정의된 시점부터 소스 파일의 끝까지 접근 가능하다는 것을 의미한다. 변수는 스코프(영역), 주기 외에도 링크라는 속성이 있다. 링크는 같은 이름의 여러 식별자가 같은 식별자를 참조하는지를 결정한다. static 내부 링크가 있는 변수를 static 변수라고 한다. static 변수는 변수가 정의된 소스 파일 내에서 어디서나 접근할 수 있지만, 소스 파일 외부에서는 참조할 수 없다. static함수는 static멤..
메모리 영역 프로그램이 실행되기 위해서는 프로그렘이 메모리에 로드되어야 한다. 프로그램에서 사용되는 변수들을 저장할 공간도 필요하다. 프로그렘이 메모리에 로드 되면 프로세스가 되며 프로그램이 운영체제로부터 할당받는 대표적인 메모리공간은 아래의 그림과 같다. 코드 영역 : 실행할 코드가 저장되는 텍스트 영역, CPU는 코드 영역에 저장된 명령어를 하나씩 가져가서 처리한다. 데이터 영역 : 프로그램의 전역 변수와 정적 변수가 저장되는 영역, 프로그램의 시작과 함께 할당되는 영역이며 프로그램이 종료되면 소멸한다. 힙 영역 : 사용자에 의해 메모리가 동적으로 할당되고 해제되는 영역 스택 영역 : 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역, 스택 프레임의 형태로 스택영역에 저장됨 스택 영역 함수..
CPU의 연산을 돕기 위한 임시적인 저장 공간이다. 32비트 시스템에서의 레지스터를 표현하면 아래의 그림과 같다. EAX(Extended Accumulator Register) : 산술/논리 연산 수행, 함수의 반환값 저장하여 호출 함수의 성공 여부, 실패 여부를 쉽게 파악 가능하다. EBX(Extended Base Register) : ESI/EDI 레지스터와 결합될 수 있으며 기본적으로는 메모리 주소 저장 용도 EDX(Extended Data Register) : EAX와 같이 쓰이고 부호 확장 명령 등에 쓰임, 큰 수의 곱셈 또는 나눗셈 등의 연산이 이루어질 때, EAX레지스터와 함께 쓰임 ECX(Extended Counter Register) : 반복 명령어 사용시 반복 카운터, 시프트 연산자(비..
ALU(Arithmetic Logic Unit) : CPU에서 연산을 담당한다. 덧셈 뺄셈과 같은 산술연산과 AND, OR같은 논리연산을 수행한다. CU(Control Unit) : 컴파일 과정으로 인해 생성된 실행 파일(.exe)에 CPU에게 일을 시키는 명령어가 저장되어 있다. 이 명령어는 이진수로 되어 있고 ALU가 연산할 수 있도록 해석하는 역할을 맡고 있다. Register : 명령어가 CPU에 들어온 순간, 덧셈 명령어는 CU에서 피연산자는 ALU에서 처리하는 중이라 생각해보자. CPU내부에서 데이터를 저장해두고 CPU가 필요할 때 직접 쓰는 기억공간이 있다면 효율적으로 처리가 가능할 것이다. CPU에서 멀면 멀수록 속도가 느려지기 때문이다. CPU내부의 매우 빠른 접근이 가능한 기억공간을 레..