2025-09-15 22:33

Tags: 소프트웨어 공학

어셈블리어

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