1. CPU의 구성 요소 세 가지 ALU (산술논리연산장치): 연산을 수행하는 장치 (계산을 담당하는 회로) 레지스터로부터 피연산자(연산의 대상)을 받아들이고 제어 장치로부터 제어 신호(연산할 작업)를 받아들인다. 연산의 결과를 레지스터, 플래그 레지스터에 저장한다. ==> 플래그 레지스터: 연산의 결과에 대한 부가 정보 > 부호 플래그 - 연산한 결과의 부호를 나타낸다. > 제로 플래그 - 연산 결과가 0인지 여부를 나타낸다. > 캐리 플래그 - 연산 결과 올림수나 빌림수가 발생했는지 여부를 나타낸다. > 오버플로우 플래그 - 오버플로우가 발생했는지 여부를 나타낸다. > 인터럽트 플래그 - 인터럽트가 가능한지 여부를 나타낸다. > 슈퍼바이저 플래그 - 커널 모드로 실행 중인지, 사용자 모드로 실행 중인..
1. 이진수와 2의 보수법 이진법(이진수) 이진법: 0과 1로 모든 수를 표기하는 방법 이진수: 0과 1만으로 표현된 수 1을 넘어가는 시점에 자리올림 숫자가 너무 길어진다는 단점 십육진법(십육진수) 십육진법: 1~9와 A~F로 모든 수를 표기(A==10, B==11, C==12, D==13, E==14, F15) 15(F)를 넘어가는 시점에 자리 올림 십진법 보다 이진수를 표현하기가 좋다. (2의 4제곱이므로) 2의 보수법 0과 1만으로 음수를 표현하는 방법 중 하나 어떤 수 n을 그보다 큰 2의 n제곱에서 뺀 값 모든 0과 1을 뒤집은 뒤, 1을 더한 값으로도 표현 가능 CPU 내부의 정보, 플래그(flag) 플래그: CPU가 명령어를 실행하는 과정에서 참고할 정보의 모음 음수 플래그가 세팅 되어 있..
1. 소스 코드에서 명령어로 컴퓨터는 명령어를 이해한다. 소스 코드는 실행되기 전 명령어(+데이터)로 변환되어 실행된다. 소스 코드: 사람(개발자)가 이해하기 편한 언어 (고급 언어) 명령어와 데이터: 컴퓨터가 이해하기 편한 언어 (저급 언어) 즉, 고급 언어로 작성된 소스 코드는 내부적으로 저급 언어로 구성된 명령어와 데이터로 변환된다. 저급 언어의 두 종류 기계어 (machine code) 어셈블리어 (assembly language) : 기계어를 사람이 이해하기 편하게 변환시킨 언어 고급 언어에서 저급 언어로 변환되는 대표적 방식 컴파일 소스 코드 전체가 컴파일러에 의해 검사, 목적 코드로 변환 C/C++, Rust 대표적인 컴파일러는 gcc, clang, Visual Studio, etc 인터프리..
프로그램을 이루는 두 정보(0과 1로 이루어진 정보) 명령어: 컴퓨터를 동작시키는 실질적인 정보 데이터: 명령어의 대상 (재료) 컴퓨터의 네 가지 핵심 부품 CPU: 명령어 해석, 실행 담당하는 장치 메인 메모리 & 캐시 메모리: 실행 중인 프로그램 저장하는 장치(전원이 꺼지면 삭제) 보조기억장치: 보관할 프로그램을 저장하는 장치(전원이 꺼져도 저장 유지) 입출력장치: 컴퓨터 내외부와 정보를 주고받는 장치