위키피디아에 따르면 컴퓨터란 컴퓨터 프로그래밍을 통해 산술 또는 논리 연산의 순서를 자동으로 수행하도록 지시받을 수 있는 기계라고 한다.
a programmable machine that receives input, stores and manipulates data or information, and provides output in a useful format.
Computer Science
는 계산 이론, 알고리즘, 계산 문제 그리고 컴퓨터 시스템의 설계를 다룹니다.
핵심은 각 작업의 논리 및 규칙을 이해하는 것이다.
우리는 PC를 학습하는 것이 아니라 PC 뒤에 숨겨진 logic을 보게 될 것이다.
컴퓨터 하드웨어와 소프트웨어를 개발하는 데 필요한 Computer Science와 전자 공학의 여러 분야를 통합하는 공학의 한 분야이다.
핵심은 하드웨어의 설계 방법과 소프트웨어가 하드웨어를 제어하는 방법을 이해하는 것이다.
컴퓨터 엔지니어로써 할 수 있는 일은 임베디드 마이크로컨트롤러용 소프트웨어 및 펌웨어 작성, 운영체제 설계가 있다.
컴퓨터 사이언스와 엔지니어링의 차이를 알아야 한다.
인코딩된 정보 또는 컴퓨터 instruction으로 구성된 컴퓨터 시스템의 일부이다.
Software가 high-level
programming language로 작성되는 경우,
high-level programming language는 compiler
나 interpreter
를 사용하여 기계어로 번역된다.
Software가 low-level
programming language로 작성되는 경우,
assembler
를 사용해 기계어로 번역된다.
가장 낮은 레벨에서 실행 코드는 기계어의 instruction으로 구성된다.
CPU
에 최적화 되어 있음SOFTWARE
는 System Software
와 Application Software
로 나뉘어져 있다.
지금 학습하고 있는 내용은 System Software
이다.
System Software
에는 Operating System, Utility Program, Language Translator가 있다.
Microcontroller unit의 줄임말로써, CPU, 메모리, I/O 인터페이스를 통합하는 단일 VLSI 칩의 소형 컴퓨터이다.
MCU는 일반 컴퓨터에 비해 리소스가 제한되어 있다.
이러한 리소스를 효율적으로 활용하기 위해 코드 최적화가 필요하다
high-level language는 하드웨어 세부사항보다는 high-level abstraction을 제공한다. 따라서 하드웨어를 세밀하게 control 하기 어렵다!
어셈블리어는 기계어와 매우 밀접하므로 코드 최적화 하기 아주 쉽다.
따라서 어셈블리어로 MCU를 control 하기 쉽다.
이 그림을 기준으로 어셈블리어부터 기계어, 하드웨어까지 총 3개이다.
Code optimization
Testing & Debugging
Reverse engineering
왜 어셈블리어를 배워야 하는가? 장점..