Assembly Language

[Assembly Language]0.어셈블리어의 종류

TigerShin 2021. 11. 14. 21:48

오늘은 어셈블리어로 스타트를 끊어보겠습니다!

어셈블리어 또한 세부적으로 종류가 나누어져있음을 알고 계시나요?
오늘은 간단한 어셈블리어의 종류를 알아봅시다!

어셈블리어가 뭐지??

어셈블리어에 대해서 들어보신 본들도 많으실 것 입니다.

일반적으로 컴퓨터는 명령어를 16진수 opcode로 처리를 합니다.

01 : ADD
77 : JA

; 이런식으로 16진수 opcode 입력을 통하여 작동을 진행한다.

이를 보통 우리는 '기계들의 언어', 즉 Machine Language라고 칭합니다.
하지만, 우리 한국인들이 프랑스를 간다고 해서, 프랑스어를 일반적으로 알아듣는 것이 아니죠?
왜냐하면, 사용하는 기준은 프랑스인이니까요.

그렇기 때문에, 컴퓨터 기준에서의 언어는 일반적인 사람은 읽기가 어렵기에, 사람이 읽을 수 있도록, 해준 것이 바로 Assembly Language, 즉 어셈블리어입니다!

하지만, 10년이 지나면, 강산이 변한다는 말처럼, 어셈블리어 또한 현대로 오면서, 고급 언어의 특성을 가져오는 경우도 존재합니다.
그러면 이에 대해 알아볼까요?

고급 어셈블리어

사실상 현대에 나온 어셈블러(Assembler)들은 고급 어셈블리어에 해당합니다.
과연, 기존의 다른 어셈블리어와 무슨 차이가 있을까요??

고급 어셈블리어에 대한 정의는 고급 프로그래밍 언어들의 특성을 가진 어셈블리어라고 할 수 있습니다.
그럼 대표적인 고급 특징에는 무엇이 있을까요?

고급 어셈블리어의 특성

  • 구조체 타입(struct, union) 사용 가능하거나, 혹은 클래스를 지원
  • 절차적 프로그래밍 특성 소유 (if문, Do문, Case 문 등)

간단하게 이정도로 확인할 수 있습니다.
어셈블리어에서의 구조체 선언은 익숙하지 않을 수 도 있습니다.

간단한 예시로 들어본다면

출처: 내 깃허브...

다음과 같이 구조체 선언도 가능합니다.

한마디로, 기존에 있던 고급 프로그래밍 언어들의 특성을 일부 가진 어셈블리어라고 생각하시면 편합니다.

고급 어셈블러들

  • MicrosoftMASM(Macro Assembler)
  • BorlandTASM(Turbo Assembler)
  • Hans Peter Anvin 팀*NASM(Netwide Assembler)
  • IBMHLASM(High Level Assembler)
  • Alessandro GhignolaLinoleum
  • Cosmos ProjectX#
  • 그외 존재

사실상 현대에 이를러 대부분의 어셈블러들은 고급 어셈블러들에 해당합니다.
여기서, MASM, NASM, HLASM은 현재도 사용합니다.

근황들(NASM, MASM 제외)

TASM은 사실상 DOS 시대 이후로, Borland사의 해체 이후, 사실상 Turbo 계열은 사라졌습니다.

Linoleum은 사용하고 있으나, 뚜렷한 프로젝트는 없습니다.

X#은 Cosmos 운영체제 개발에 사용되었고, 현재에도 존재하나, 기존의 어셈블리어를 기대하시면, 약간 거부감이 생기실 수 있습니다.

HLASM은 못 들어보신 분도 계시겠지만, IBM사의 주력 메인프레임 중 하나인, Z 메인프레임의 CPU인 z/Acritecture만 지원하기에, 못 들어본 계신 분이 많으시겠지만, 아직까지도 사용되는 중입니다