목록전체 글 (67)
코가손의 블로그
소스 코드는 아래의 그림과 같은 과정을 거쳐 실행 파일(.exe)로 만들어 진다. 전처리기(preprocessor) : 소스 코드의 주석 제거, define을 치환하는 단계 컴파일러(compiler) : 어셈블리 파일로 변환, 어셈블리코드는 CPU 명령어 조합이며 어셈블리어는 CPU에 의존적임 어셈블러(assembler) : 오브젝트 코드 파일로 변환, 오브젝트 코드는 0과 1로 이루어진 코드이다. 주소 정보는 아직 확정되지 않은 상태이다. 링커(linker) : 오브젝트 파일들을 묶어서 실행 코드 파일로 변환한다. 운영체제가 로딩할 수 있도록 주소 정보를 할당한 파일을 만들어 낸다. 그래서 링커는 운영체제에 의존적이다. 전처리 과정 전처리기는 헤더 파일들과 메크로를 치환하여 프로그램에 적용한다. 전처리..
컴퓨터의 메모리에 여러 개의 연속된 대상을 배열하는 방법, 바이트를 배열하는 방법으로 바이트순서(Byte order)라 한다. 리틀 엔디안 vs 빅 엔디안 빅 엔디안 방식은 사람이 숫자를 쓰는 방법과 같이, 큰 단위 바이트가 앞에 오는 방법이고 리틀 엔디안은 작은 단위의 바이트가 앞에 오는 방식이다. 빅 엔디안 방식은 사람의 디버깅에 유리하고 리틀엔디안은 수학적 연산이 빠르다는 장점이 있다. 앞으로 볼 일이 거의 없겠지만 네트워크 환경을 다루어야 할 때 바이트오더를 잘 확인하고 통일시켜 주어야 한다고 한다.
▶ 포인터 더보기 선언 int number = 1; int* pointer; pointer = &number; 포인터는 주소를 담을 수 있고 int 타입이든 char 타입이든 컴파일러(32bit->4바이트, 64bit->8바이트)에 따라 고정된 크기의 주소가 할당된다. 산술 연산자 +- pointer += 1; 포인터형에 1을 더하면 주소값이 4가 증가한다. int형은 4바이트의 크기를 가지고 있기 때문이다. 포인터 타입에 따라 증가하는 주소값이 달라진다. 간접 연산자 *pointer = 3; pointer가 가리키는 주소의 값을 3으로 변경한다. *pointer식으로 포인터가 가리키는 값(주소)에 접근할 수 있다. 간접 멤버 연산자 -> // player클래스를 가리키는 playerPtr있다고 가정 p..