본 포스팅은 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있음을 밝힙니다. 메모리를 중앙처리장치(CPU)가 하드디스크에서 리소스를 불러오기 전 거쳐가는 장소이다. 비유를 들어 CPU가 작업자, 하드디스크를 창고, 메모리를 작업대라고 가정 했을 때, 창고 (하드디스크)의 물건을 작업자(CPU)가 작업을 하기 위해 작업대(메모리)로 불러오는 것과 같다. CPU가 C언어로 코딩 된 소스파일을 빌드 하면서 메모리를 할당 받게 된다. 여기서 변수를 선언한다는 것은 메모리의 일정 부분을 할당 받아 쓰겠다는 뜻인데, 이는 작업자 (CPU)가 작업대(메모리)에서 특정 부분을 ‘어떠한 작업’을 위한 구역으로 사용하겠다고 비유할 수 있다. 실제로 int 형 변수를 선언하게 되면 메모리 상에서 in..
본 포스팅은 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있음을 밝힙니다. 표준 입력 함수 getchar() : 표준 입력 장치(키보드)가 입력한 내용이 버퍼에 들어가고 그 버퍼에 들어있는 단위문자 하나를 가져온다. 예를 들어 char ch로 캐릭터형 변수가 선언 되었다면 ch=getchar로 입력받을 수 있다. 다만 크기가 단일문자 하나로 제한되며, ENTER KEY가 단일문자의 속성을 가지고 있으므로 ENTER KEY를 입력시 getchar로 ENTER KEY가 버퍼에서 불려올 수도 있다. 이를 방지하려면 fflush(stdin) 함수를 사용한다. prtinf로 %c로 출력이 가능하며 %s로 출력 시 빌드는 에러 없이 진행되나 실제 구동에서 에러가 발생하였다. 그리고 개인적으..
※ 본 포스팅은 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있음을 밝힙니다. ○ 인터럽트 인터럽트는 프로세서가 프로그램을 실행 도중 하드웨어나 소프트웨어의 문제 때문에 프로그램이 실행되고 있던 순서를 변경하여 좀 더 급한 이벤트를 수행한 후에 원래의 프로그램으로 복귀하여 나머지 프로그램을 수행한다. 인터럽트가 발생하면 현재 위치가 자동으로 인터럽트의 스택에 복귀주소로써 저장되어 인터럽트의 끝에서 복귀 명령을 만나면 다시 복귀주소로 돌아온다. 인터럽트의 발생원인은 크게 1. 하드웨어 인터럽트와 2. 소프트웨어 인터럽트로 나뉜다. 하드웨어 인터럽트의 경우 다시 내부 인터럽트와 외부 인터럽트로 나뉘게 되는데 내부 인터럽트는 프로세서에 정의되어있지 않은 명령을 실행하려 한다거나 0으로..
※ 본 포스팅은 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있음을 밝힙니다. 1. 일반 레지스터 레지스터 이름 역 할 EAX (Accumulation) 누산기(계산)에 해당하며 대부분의 연산들이 수행되는 레지스터 ECX (Counter) 개수 횟수 등을 저장하는 카운터로 주로 반복문의 횟수에 사용된다. EDX (Data) 누산기의 확장으로 EDX+EAX로 64비트 연산을 할 때 사용된다. EBX (Base) 일반적인 데이터 레지스터, 주소 지정 시 사용된다. 2. 주소 레지스터 레지스터 이름 역 할 ESP Stack의 꼭대기 주소를 담는다. EBP Stack Frame의 바닥 주소를 담는다. ESI (Source) 문자열 연산에서 사용되는 원본 주소를 담는다. EDI (Dest..