2007년 3월 27일 화요일

어셈블러 초급 입문

어셈블러에 관련된 자료모음집입니다. 이 포스트는 자주 업뎃이 되여집니다.

어셈블러는 기본 컴퓨터 명령어들을, 컴퓨터 프로세서가 기본 연산을 수행하는데 사용할 수 있는 비트 패턴으로 변환시키는 프로그램이다. 몇몇 사람들은 이러한 명령어들을 어셈블러 언어라고 부르며, 어셈블리 언어라고 부르는 사람들도 있다. 아래에 어셈블러가 어떻게 동작하는지를 나타냈다.

대부분의 컴퓨터들은 미리 지정된 매우 기본적인 명령어 집합을 가지고 나오며, 이것들은 컴퓨터가 수행할 수 있는 기계적인 기본 연산에 부합된다. 예를 들면, "Load"라는 명령어는, 프로세서가 비트 스트링을 프로세서 메모리의 한 장소에서 레지스터라고 불리는 특별한 저장소에 옮기게 한다. 프로세서가 적어도 8개의 레지스터를 가지고 있고, 각각은 번호가 붙여져 있다고 가정할 때, 아래의 명령어는 메모리의 3000번지에 있는 값을 8번 레지스터로 옮기게 된다.
L 8,3000

  • 프로그래머는 이러한 일련의 어셈블러 명령어들을 이용하여 프로그램을 작성할 수 있다.
  • 이러한 일련의 어셈블러 명령어들을 소스코드 또는 원시프로그램이라고 부르는데, 그 프로그램이 시작될 때 어셈블러 프로그램에 조건으로 지정되어진다.
  • 어셈블러 프로그램은 원시프로그램 내의 각 프로그램 문장들을 가져다가 이에 부합하는 비트 스트림 또는 패턴(주어진 길이만큼의 0과 1의 연속)을 만들어 낸다.
  • 어셈블러 프로그램의 출력은 입력된 원시 프로그램과 관련된 오브젝트 코드 또는 목적프로그램이라고 불린다.
  • 오브젝트 프로그램을 구성하고 있는 0과 1의 연속은 때로, 기계어라고도 불린다.
  • 오브젝트 프로그램은 필요할 때마다 실행될 수 있다.

아주 초창기에는 프로그래머들이 실제로 기계어로 프로그램을 작성했지만, 프로그래밍의 속도를 향상시키기 위해 어셈블러 언어와 명령어 세트가 개발되었다. 오늘날, 어셈블러 프로그래밍은 프로세서를 매우 효율적으로 제어해야 하는 곳에만 제한적으로 사용된다. 그러나, 어셈블러 프로그래밍은 특정한 컴퓨터의 명령어 세트에 대해 많은 지식을 필요로 한다. 역사적으로, 대부분의 프로그램들은 COBOL, FORTRAN, PL/1 및 C 등과 같은 고급언어로 쓰여져 왔다. 이러한 언어들은 어셈블러 언어에 비해 배우기 쉽고, 프로그램 작성이 더 빠르다. 이러한 고급언어로 작성된 원시프로그램을 처리하는 프로그램을 컴파일러라고 부른다. 어셈블러와 같이, 컴파일러는 고급언어의 문장을 가져다가 기계어로 변환한다.
프로그램의 준비와 이식성에 관한 새로운 아이디어로서, 가상머신 개념이 있다. 예를 들면, 자바 프로그래밍 언어로 작성된, 바이트코드라고 불리는 출력이 이론적으로만 존재하는 컴퓨터를 위해 컴파일 된다. 바이트코드는 미리 자바 가상머신 내에 다운로드 되거나, 만들어진 어떠한 컴퓨터 플랫폼에도 보내어 질 수 있다. 가상머신은 그 플랫폼의 명령어 길이나 기타 다른 특성을 알고 있으며, 자바 바이트코드를 실행할 수 있다.

아래에 3500라인짜리 어셈블러 초보자 강좌를 올립니다.



댓글 없음:

댓글 쓰기