본문 바로가기
프로그램 개발

[어셈블리어] 어셈블리어는 왜 사용하는 걸까?

by DRIN 2016. 9. 26.

목차

    반응형

    오늘은 저번 강의에 이어서 어셈블리어를 도대체 왜 사용하는 것일까? 라는 주제로 진행을 해보려 합니다. 그럼 본론으로 들어가서 어셈블리어는 시스템 드라이버 혹은 임베디드 계열, 그중에서도 8비트급 CPU에서 여전히 쌩쌩하게 현역으로 돌아가고 있습니다. 드라이버는 하드웨어를 제어하는 특성상 클럭과 타이밍을 맞추어야하는데 이를 어셈블리어로 하지않으면 타이밍을 제대로 맞추기 어려운 문제도 있고, 임베디드에서는 단가나 보드,칩 크기 문제로 8비트 CPU를 장착합니다. 램크기가 작은경우 C컴파일러에서 생성하는 함수호출 프로시저등에서 기본적으로 생성하지만 사용되지는 않는 코드들이 불필요하게 차지하는 램 용량도 성능저하를 일으킬 수 있기 때문에 어셈블리어의 사용이 유리하게 될 수 있습니다. 


    즉, 한정된 공간안에서 효율적으로 사용하기 좋은 언어가 어셈블리어라는 것이죠. 하지만 공간의 여유가 있을때에는 C컴파일러를 사용하는 것이 더욱 효율적이다. 그 이유는 저번 강의에서 n번째 피보나치 수열을 구하는 프로그램을 보았을때 어셈블리어는 간단한 명령어들로 구성이 되야하기에 코드의 길이가 길어집니다. 피보나치 수열의 경우 매우 간단한 코드이기에 한눈에 볼 수 있지, 대형 프로젝트의 코드는 스크롤을 한참을 내려도 끝이 않보일 정도로 길어집니다. 이때문에 대형 프로젝트에서는 어셈블리어같은 저급언어보다는 고급언어의 효율성이 더욱 높아집니다. 이렇다고 해서 어셈블리어가 꼭 나쁜것만은 아닙니다. 이 어셈블리어를 이용하면 CPU의 처리과정을 쉽게 이해할 수 있고, 프로그램의 디버그(오류가 나는 부분을 찾아내는 것)도 할 수 있기때문에 알아두어야합니다. 필수가 아닌 선택이지만요. 


    또 다른 사용으로 컴퓨터 보안의 핵심인 리버싱(리버스 엔지니어링)에서도 사용됩니다. 리버싱이란 간단히 프로그램을 만든순서를 거꾸로 올라가면서 이 프로그램이 어떻게 만들어졌는지 알아가는 과정이라고 생각하시면 됩니다. 자세한것은 나중에 강좌로 올리겠습니다.

    이처럼 다양한 용도로 사용되는 어셈블리어로 만든 유명한 프로그램들도 존재합니다.

    ▲크리스 소이어의 롤러코스터 타이쿤1,2 및 트랜스포트 타이쿤

    ▲우리나라에서 흥행하였던 바람의 나라

    ▲안철수연구소의 V3백신프로그램의 토대인 V1(사진을 못구해 V3로 대체)

    이처럼 어셈블리어로도 충분히 프로그래밍이 가능하다. 다만 일명 굇수가 되어야하지만 말이다. 어셈블리어를 게임으로 체험해 보고 싶다면, 스팀게임인 TIS-100 , Human Resource Machine을 해보면 더욱 더 어셈블리어가 머리속에 쏙쏙 들어올 것이다. 그럼 다음 강좌에서는 어셈블리어의 명령어에 대해서 자세히 알아보겠다. 어셈블리어 프로그램으로는 Ollydbg올리디버거를 사용하겠다. 다운로드 홈페이지로는 http://www.ollydbg.de/가 되겠다. 그럼 이번 강좌는 여기까지!

    2016/09/26 - [어셈블리어] - [어셈블리어] 1장. 어셈블리어란?


    반응형