의견.png

어셈블리

위키원
aktkekfekdus (토론 | 기여)님의 2019년 6월 28일 (금) 15:31 판 (구성)
이동: 둘러보기, 검색

어셈블리(Assembly)는 기계어를 대체하기 위해 만든 2세대 프로그래밍 언어이다. 어셈블리어 또는 어셈블리 언어(Assembly Language)라고도 한다.

개요

어셈블리어는 기계어를 사람이 이해하기 쉬운 기호와 1:1로 대응시켜 기호화한 프로그램 언어로서, 기호 언어라고도 부른다. 0과 1로 구성된 기계어와 달리, 어셈블리어는 간단한 영어 단어를 사용한다. 어셈블리어는 그 코드가 어떤 일을 할지 직관적으로 보여 줌으로써 논리상의 오류나 수행속도, 수행 과정에 있어 명확하게 한다. 하드웨어에 직접 액세스하므로 처리 속도가 빠른 장점이 있지만, C, Java 등 3세대 고급 언어에 비해 프로그래밍 작업이 매우 어렵고 복잡한 단점이 있다. 그러나 컴퓨터 시스템과 구조를 이해하고 고급언어에서 할 수 없는 조작을 처리하거나 프로그램 최적화 및 리버스 엔지니어링을 위해서 필요하다.[1]

특징

어셈블리는 기계어와 가장 가깝기 때문에 그 기계의 특성을 잘 살릴 수 있다. 단순한 계산으로 처리되는 업무에 적합하며, 비트 연산이 가능하여 시스템 프로그램 작성에 용이하다.

장점

어셈블리는 고급 언어와는 달리 하드웨어에 직접적인 접근을 하기 때문에 수행 속도가 빠르다. 컴퓨터가 직접 이해할 수 있는 언어로 2진수와 0과 1의 조합으로 구성되어 있는 기계어와 비교했을 때, 기호 코드를 사용하므로 프로그램 작성이 용이하고, 프로그램 내용을 이해하기 쉬우며, 수정, 삭제, 추가가 간편하다는 장점이 있다. 또한 메모리의 번지부를 기호로 쓸 수 있기 때문에 번지를 잘못 지정할 가능성이 적다.

단점

어셈블리는 컴퓨터에 대한 전문지식이 있어야 사용할 수 있으며, 기종마다 다르고, 호환성이 없다. 특정 기종이 어셈블리어에 의해 작성된 프로그램은 그 기계에서만 처리될 뿐 다른 기종에서는 처리되지 않는다. 이것은 컴퓨터의 내부적인 구조와 직접적으로 연관되어 있으며, 또한 기계의 특성과 밀접하게 관련되어 있기 때문이다. 이와 같은 어셈블리어로 만들어진 프로그램은 어셈블러(assembler)라는 번역기에 의해 컴퓨터가 실행할 수 있는 기계어 명령으로 바뀌어 실행된다. 어셈블리어로 작성된 프로그램은 대개 고급 언어로 작성된 프로그램들보다 쓰기, 읽기, 관리하는 측면에서 더 어렵다.

구성

어셈블리는 표지부, 연산부, 피연산부로 구성된다.

표지부

프로그램에서 명령들을 참조하기 위해 명령 집단에 붙여지는 이름이다.

연산부

mov(이동), add(덧셈), subtract(뺄셈) 등 수행을 위한 특별한 명령들의 기호로 되어 있다.

피연산부

데이터가 처리되어 저장될 레지스터나 저장 장소를 나타낸다.

활용

하드웨어 디바이스 드라이버 : '드라이버' 파일은 대부분 어셈블리어로 작성한다. 프린터나 그래픽 카드, 마우스와 같은 각종 장치의 드라이버 파일은 크기가 작으면서 실행 속도는 빨라야 하기 때문이다. 또한 드라이버 파일은 하드웨어를 제어하는 파일이므로 하드웨어를 가장 효과적으로 제어할 수 있는 어셈블리어로 작성하는 것이 좋다.

일반 프로그램의 특정 기능 최적화 : 게임이나 기타 프로그램을 만들 때 고급언어로만 작성하면 속도가 느려서 프로그램이 제 역할을 할 수 없다. 하드웨어를 좀 더 정밀하게 직접 제어해야 하는 경우, 윈도우의 API를 사용해서는 정밀한 제어가 힘들기 때문에 어셈블리어로 만든 프로그램과 링크시켜 사용하는 것이 보편적이다.

임베디드 시스템 : 스마트폰, TV, 냉장고부터 엘리베이터, ATM과 같은 산업용 장비까지 임베디드 시스템을 사용한 각종 전자 장비의 ROM칩도 대부분 어셈블리어로 작성한다.[2]

각주

  1. 어셈블리 언어란?〉, 《tistory》
  2. 어셈블리어란?〉, 《Tistory》

참고 자료

같이 보기


  의견.png 이 어셈블리 문서는 프로그래밍에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.