컴퓨터의 저급 언어인 어셈블리(Assembly) 언어의 특징과 구조를 정리했다.
CPU 레지스터를 직접 조작하는 하드웨어 밀착형 언어이다.
기계어와 어셈블리
어셈블리는 기계어와 일대일 대응되는 언어이다.
이진수 패턴을 사람이 식별 가능한 단어인 니모닉(Mnemonic)으로 변환하여 표현한다.
x86 어셈블리 코드의 예시는 다음과 같다.
; 1. 데이터 이동
MOV EAX, 10 ; EAX 레지스터에 10 저장
MOV EBX, EAX ; EAX 값을 EBX로 복사
; 2. 산술 연산
ADD EAX, 5 ; EAX = EAX + 5
SUB EBX, 2 ; EBX = EBX - 2
; 3. 비교 및 분기
CMP EAX, EBX ; 두 값 비교
JE label ; 일치 시 label로 점프
레지스터를 직접 제어하여 메모리 접근을 최소화함으로써 높은 성능을 구현할 수 있다.
어셈블리 구성 요소
- 명령어 (Opcode): 수행할 구체적 동작 지정.
- 피연산자 (Operand): 연산 대상 데이터 또는 주소.
- 레지스터 (Register): CPU 내부의 고속 저장소.
저급 언어 학습의 가치
고수준 언어 코드가 최종적으로 레지스터 조작으로 변환되는 과정을 이해하는 것은 컴퓨터 구조 파악에 필수적이다.
어셈블리 학습을 통해 시스템의 동작 원리를 명확히 분석할 수 있는 것 같다.