📖 WIPIVERSE

🔍 현재 등록된 정보: 30,966건

어셈블리어

어셈블리어 (Assembly language)는 특정 컴퓨터 아키텍처를 위한 저수준 프로그래밍 언어의 일종입니다. 기계어와 거의 일대일로 대응되는 명령어를 사용하며, 프로그래머가 하드웨어를 직접 제어할 수 있도록 해줍니다. 고급 프로그래밍 언어(C, Java, Python 등)와 달리, 어셈블리어는 특정 CPU 또는 프로세서 제품군에 종속적입니다.

특징

  • 저수준 언어: 어셈블리어는 추상화 수준이 낮아, CPU의 레지스터, 메모리 주소, 인터럽트 등 하드웨어적인 요소를 직접 다룹니다.
  • 기계어와의 밀접한 관계: 어셈블리어 명령어는 기계어 코드로 번역되는 어셈블러에 의해 처리됩니다. 각 어셈블리어 명령어는 일반적으로 하나의 기계어 명령어에 대응됩니다.
  • 가독성: 기계어에 비해 가독성이 높지만, 고급 언어에 비해서는 복잡하고 이해하기 어렵습니다.
  • 성능: 하드웨어를 직접 제어할 수 있기 때문에, 성능 최적화에 유리합니다. 하지만, 개발 생산성은 고급 언어에 비해 낮습니다.
  • 이식성: 특정 하드웨어 아키텍처에 종속적이므로, 다른 아키텍처로의 이식이 어렵습니다.

용도

  • 임베디드 시스템: 하드웨어 자원이 제한적인 임베디드 시스템 개발에 사용됩니다.
  • 장치 드라이버: 운영체제와 하드웨어 간의 인터페이스를 담당하는 장치 드라이버 개발에 사용됩니다.
  • 운영체제: 운영체제의 핵심 부분(커널) 개발에 사용되기도 합니다.
  • 성능 критический(critical)한 프로그램: 최대한의 성능을 필요로 하는 프로그램(게임, 암호화 알고리즘 등)의 특정 부분을 최적화하는 데 사용됩니다.
  • 리버스 엔지니어링: 프로그램의 동작 방식을 분석하는 리버스 엔지니어링에 사용됩니다.

기본 구성 요소

어셈블리어 프로그램은 일반적으로 다음과 같은 요소로 구성됩니다.

  • 명령어 (Instructions): CPU가 수행할 작업을 지시하는 코드입니다. (예: MOV, ADD, SUB, JMP)
  • 레지스터 (Registers): CPU 내부에 위치한 고속 저장 공간입니다. 데이터를 일시적으로 저장하고 연산에 사용됩니다.
  • 메모리 주소 (Memory Addresses): 메모리 내 특정 위치를 나타내는 주소입니다. 데이터를 읽고 쓰는 데 사용됩니다.
  • 레이블 (Labels): 코드 내 특정 위치를 나타내는 이름입니다. 분기문(JMP)의 목적지로 사용됩니다.
  • 지시어 (Directives): 어셈블러에게 특정 작업을 지시하는 명령어입니다. (예: define, include, segment)

예시 (x86 어셈블리어):

MOV AX, 10  ; AX 레지스터에 10을 저장
ADD AX, 20  ; AX 레지스터에 20을 더함
MOV BX, AX  ; AX 레지스터의 값을 BX 레지스터에 저장

참고: 어셈블리어는 CPU 아키텍처에 따라 문법과 명령어가 다릅니다. 대표적인 예로 x86, ARM, MIPS 등이 있습니다.