2025-09-15 22:33
Tags: 소프트웨어 공학
어셈블리어
- 컴퓨터의 CPU가 직접 이해하는 기계어와 일대일로 대응되는 가장 낮은 수준의 프로그래밍 언어
- 기계어 명령어에
ADD
(더하다),MOV
(이동하다),JMP
(점프하다)와 같이 사람이 이해하기 쉬운 니모닉(Mnemonic) 을 일대일로 대응시킨 것 - 어셈블리어는 특정 CPU 아키텍처에 종속적이다.
- 즉, Intel의 x86 CPU에서 사용되는 어셈블리어와 ARM 기반 CPU(스마트폰에 주로 사용되는)의 어셈블리어는 서로 다르다.
- 이는 어셈블리어가 CPU의 설계도와 같아서, CPU의 내부 구조(레지스터, 명령어 세트 등)를 그대로 반영하기 때문
기계어 (예시) | 어셈블리어 니모닉 | 의미 |
---|---|---|
10110000 | MOV | 데이터를 이동시켜라 (Move) |
00000101 | ADD | 두 값을 더해라 (Add) |
11101001 | JMP | 특정 주소로 이동해라 (Jump) |
- 기본 구조
- 레이블 (Label): 코드의 특정 위치를 가리키는 이름. 주로 분기(Jump) 명령어의 목적지가 된다. 콜론(
:
)으로 끝난다. - 명령어 (Instruction/Mnemonic): CPU가 수행할 작업을 나타내는 니모닉.
MOV
,ADD
,SUB
,CMP
등이 있다. - 오퍼랜드 (Operand): 명령어가 처리할 데이터나 데이터의 위치. 레지스터, 메모리 주소, 상수 값 등이 올 수 있다. 명령어에 따라 0개에서 3개까지의 오퍼랜드를 가질 수 있다.
- 주석 (Comment): 코드에 대한 설명. 세미콜론(
;
)이나 해시(#
) 뒤에 작성하며, 어셈블러는 이 부분을 무시한다.
- 레이블 (Label): 코드의 특정 위치를 가리키는 이름. 주로 분기(Jump) 명령어의 목적지가 된다. 콜론(