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) 명령어의 목적지가 된다. 콜론(