어셈블리언어란 무엇일까?
어셈블리어는 컴퓨터의 본래의 언어에 가장 가까운 언어를 말한다. 일단 언어라는 것은 다른 사람과 소통을 하기 위해 사용하는 것이다. 한국어란 기본적으로 한국사람들끼리 소통하기 위한 언어이다. 컴퓨터의 언어란 컴퓨터끼리 소통하기 위해 사용하는 언어이다. 어셈블리어는 컴퓨터의 언어인 기계어와 1:1로 대응되는 언어이다. 영어의 경우 한글에 존재하는 단어가 없는 경우가 많다. 예를 들어 한글의 서럽다라는 말은 영어에서 sad, sorrow 등으로 사용되는데 이는 의미가 정확히 1:1로 대응되는 단어가 없다고 할 수 있다. 이처럼 언어가 1:1 대응이 된다는 것은 기계어의 단어의 뜻을 가지는 단어가 어셈블리어에도 하나만 존재한다는 것이다. 또한 어셈블리어는 기계어의 니모닉이라고도 하는데 니모닉이란 무엇을 기억하기 쉽도록 도움을 주는 것을 말한다. 기계어는 0과 1의 조합으로 이루어져 있다. 하지만 어셈블리어는 영어로 이루어져있어 0101101과 같은 기계어를 기억하는 것보다 abnw과 같은 영어를 기억하는게 더 쉬울 것이다. 이처럼 어셈블리어가 나온 이유는 기계어를 간단하게 사용하기 위해 나온 것이다. 하지만 어셈블리어가 기계어와 1:1로 대응된다고 하여도 컴퓨터에 사용하기 위해서는 사람이 어셈블리어로 작성한 것을 다시 기계어로 변환해주는 것이 필요한데 이 기능을 하는 것을 어셈블러라고 한다. 어셈블러는 번역기와 동일하다고 생각하면 된다.
어셈블리어는 기계어와 1:1 대응이지만 고급언어의 하나의 단어가 여러 기계어의 조합으로 이루어져 있다. 예를 들어 기계어가 단순히 go라는 명령어로 '팔굽혀펴기'를 한다면 고급어는 sixgo이라는 명령어를 사용하면 '팔굽혀펴기'가 6번 실행된다.
어셈블리어의 이식성
어셈블리어는 하드웨어와 1:1로 대응되는 언어이기 때문에 이식성이 없다고 할 수 있다. 이식성이란 다른 하드웨어에서 사용이 가능한가를 말한다. 기계어와 가장 가까운 컴퓨터의 언어인데 왜 이식성이 없냐고 의문을 가질 수 있을 것이다. 일단 하드웨어가 무엇인지를 설명하면 컴퓨터, 스마트폰 등이 하드웨어라고 할 수 있다. 기계어가 컴퓨터의 언어라고 했지만 정확히는 같은 하드웨어끼리 사용하는 언어를 의미한다. 컴퓨터끼리 소통이 가능한 기계어가 있고 스마트폰 끼리 소통이 가능한 기계어가 있으므로 스마트폰의 기계어와 1:1로 대응되는 어셈블리어는 다른 하드웨어에서는 사용이 불가능한 것이다. 하지만 고급언어는 이식성을 가지는데 고급언어는 컴파일러를 가지고 있는데 번역기에 해당하는 컴파일러를 통해 다양한 하드웨어에서 사용하는 것이 가능하기 때문이다. 하지만 어셈블리어는 위에서 이야기 했듯 하드웨어의 기계와와 1:1로 대응되는 언어이다. 예를 들어 컴퓨터의 어셈블리어에 tiger라는 명령어가 있고 스마트폰에는 lion이라는 명령어가 있다면 타이거와 라이온은 엄연히 다른 것이므로 이를 번역해서 다른 하드웨어에 사용하는 것은 불가능하다. 어셈블리어와 달리 고급언어가 번역이 가능한 이유는 고급언어는 six animal이라는 명령어를 가지고 있기 때문이다. tiger나 lion모두 animal에 속하므로 six animal이란 명령어는 tiger나 lion명령어는 그저 6번 반복하면 되는 것이다.
어셈블리언어의 필요성
위에서 보았듯 고급언어는 six animal이란 명령어 처럼 어셈블리어의 tiger라는 명령어를 6개 묶은 것이다. 이처럼 고급언어는 기계어의 특성을 정확하게 반영하는게 아니다. tiger가 animal에 속하기는 하지만 six tiger라는 명령어가 더 정확하고 빠른 표현이다. 고급언어를 사용하면 animal 중에서 tiger가 있는지를 확인하는 과정을 거쳐는 등 여러 과정이 필요하다. 예를 들어 동물원에서 일하는 사람이 동물 여섯마리가 있는지 확인하라는 명령을 받았다면 그 사람은 동물에 속하는 것들이 무엇인지 일단 알고 있어야 한다. 즉 기본적으로 장미꽃은 동물이 아니라는 것등을 알고 있어야 한다. 이 것은 컴퓨터에도 그대로 적용되는데 컴퓨터도 인간의 기억공간에 해당하는 메모리라는 것을 가지고 있다. 이 메모리의 공간은 64메가, 4기가 등 다양한 크기로 제한되어 있는데 만약 컴퓨터가 호랑이 6마리라는 명령어를 받았다면 메모리에는 호랑이가 무엇인지에 대해서 기억하면 된다. 하지만 동물 6마리라는 명령어를 받았다면 동물에 속하는 건 무엇인지에 대한 방대한 정보를 기억하는 것이 필요하다. 따라서 아주작은 메모리(인간으로 치면 기억력이 무지하게 떨어져서 아주 조금만 기억이 가능한 사람)를 가진 하드웨어에 경우 당연히 메모리 공간을 효율적으로 사용하기 위해서는 어셈블리어가 필요한 것이다. 또한 동물 6마리라는 명령어보다 호랑이 6마리라는 명령어가 동물에 호랑이가 속하는지 따져보지 않아도 되므로 속도도 더 빠르다. 따라서 어셈블리어를 사용하면 속도를 향상시키는 것이 가능하다.