1. 기계 언어 (Machine Language)
ㅇ 기계가 직접 이해할 수 있는 2진수 언어
- CPU 들은, 자기들 만이 이해하고 수행할 수 있는 기계어들을 갖음 ☞ 명령어 참조
. CPU 종류별로, 기계어는,
. 그들만의 비트 패턴화시킨 인코딩된 명령어 체계, 명령어 집합을 갖음 ☞ 명령어 집합 참조
- CPU 제조사는, 자사의 CPU를 위한 특정 어셈블리 언어를 설계함
. 또한, 제조사에 의해 어셈블러 S/W 도구도 제공됨
2. 어셈블리 언어 (Assembly Language)
ㅇ 기계어와 1:1로 대응되며, 심볼을 이용하여 기계어 보다는 쉽게 프로그래밍할 수 있음
- 즉, 기계어 명령을 알기쉬운 기호(Mnemonic) 또는 심볼(Symbol)로 표시한 것
. 각 기계어와는 1:1 대응을 이루는 다수의 니모닉으로 구성됨
.. 例) MOV, ADD, LDR 등
ㅇ 기계어와 고급언어 간에 중간적 존재
3. 어셈블리 언어의 구성
ㅇ 어셈블리 언어의 구성 요소
- 라벨 (label : opcode operands)
. 선택적 사용 (분기문의 목적지)
- 기계 명령어/연산 부호/연산자 (0peration Code, Opcode)
. CPU가 취할 수행동작
.. 각 기계 명령어는 그 자신만의 유일한 수치 코드를 갖음
- 피연산자/오퍼랜드 (Operand)
. 명령 수행 대상인 데이터(상수,주소 등)
.. 명령어 종류에 따라 0 ~ 3개 정도 뒤에 따라올 수 있음
- 매크로 (Macro)
. 반복되는 일련의 순차적 명령어들을 조합하여 한 번에 사용할 수 있도록 만들고,
. 이를 하나의 새로운 이름으로 정의
ㅇ 주요 명령어 구분
- 기초 명령어 : MOV, ADD (addtion), LDR (load a register) 등
- 분기 명령어 (Branch Instruction) : B (branch)
. 프로그램의 순차적 흐름을 바꿔줌
- 메모리 참조 명령어 (Memory Reference Instruction)
ㅇ 명령어 집합 (Instruction Set)의 구성 요소
- 연산 종류 (operation repertoire)
- 데이터 유형 (data type)
- 명령어 형식 (instruction format)
- 주소지정방식 (addressing mode)
4. 어셈블러 (Assembler)
ㅇ 어셈블리 언어로 작성된 프로그램을 기계어로 변환시켜주는 소프트웨어
- 즉, 기호화된 어셈블리 언어를 기계어로 변환시켜 주는 언어 번역기의 일종
5. 어셈블리 언어 프로그래밍
ㅇ 사용할 프로세서(CPU) 마다 다름
- 어셈블리 언어 명령어 세트, 문법 체계, 데이터 표현 방식, 프로세서 구조 등