기계어 프로그램이란 컴퓨터로 하여금 원하는 테이타 처리 업무를 시행시키기 위해 서 작성된 명령어 또는 문장으로 구성된 리스트이며 다음과 같은 종류가 있습니다.
1. 기계어 프로그램의 종류
1. 이진 코드: 메모리상에 실제로 나타나는 형태의 명령어로서 이진수 명령어와 피연산자의 시퀸스입니다.
2. 8진수 또는 16진수:이진수 코드를 그대로 8진수나 16진수로 표현한 것입니다.
3. 기호 코드: 사용자가 연산 부분, 주소 부분 등에 대하여 기호(문자, 숫자, 특수 문자 등) 를 사용하게 되며, 각 기호 명령어는 하나의 이진 코드로 번역되는데 이러한 번역은 어셈블러 (assembler) 라는 특수한 프로그램이 하게 되기 때문 에 이러한 종류의 기호 프로그램을 어셈블리 언어 (assembly language)라고 부릅니다.
4. 고급 프로그래밍 언어:컴퓨터 하드웨어의 동작을 위주로 하지 않고 문제해결 에 필요한 과정을 고려하여 개발된 언어로서 포트란 등이 그 예입니다.
문제 위주의 기호와 형식을 사용하며, 각 문장들은 컴퓨터상에서 실행되기 전에 여러개의 이진 명령어로 번역이 되는데 이러한 번역을 담당하는 프로그램을 컴파일러 (compiler) 라고 부릅니다.
2. 컴파일러란?
여러 종류의 프로그래밍 언어들 사이의 관계를 설명하기 위하여 기본 컴퓨터 의 경우를 예로 들어 보겠습니다. 표 6-2는 이진 프로그램입니다. 첫번째 칸은 각 명령어나 피연산자가 저장된 메모리내의 주소이며 두번째 칸 은 이러한 메모리 영역내의 이진 내용입니다. 컴퓨터는 실제로 이들 명령어를 그대로 수행하지만 프로그램 작성자들은 이진수로 쓰여진 프로그램을 이해하기 가 매우 힘듭니다.
3. 이진코드로 명령어 나타내기
이진 코드로 각 명령어를 나타내는 데는 매우 많은 자리수가 필요로 하므로 8진수를 사용하거나 표 6-3과 같이 16진수를 사용하면 각 명령어를 나타내기 위한 자리수를 감소시킬 수 있습니다. 그렇지만 표현상 용이할 뿐 컴퓨터내에서는 마찬가지로 이진수로 표현되기 때문에 16진수 1 자리는 4비트가 필요하며 프 로그램을 이해하기 어려운 문제점은 아직도 남게 됩니다. 표 6-4는 각 명령어를 기호화된 이름으로 나타내었습니다.
따라서 메모리 참조 명령어의 주소와 피연산자 부분은 16진수값을 나타내며, 영역 005에 저장된 데이타 FFE9는 맨 왼쪽 비트가 1 이므로 음수를 나타낸다는 점에 유의해야 합니다. 이와 같은 기호 프로그램은 다루기가 편리하며 각 기호는 프로그램이 실행 되기 전에 해당되는 이진 명령어로 번역됩니다.
각 16진수 주소를 기호 주소로. 그리고 각 16진수 피연산자를 십진수 피연 산자로 바꿈으로써 프로그램을 작성하면서 주소를 계산해야 하는 번거로움을 제거할 수 있습니다. 표 6-5는 두 개의 숫자를 더하는 어셈블리 언어 프로그램입니다.
4. 기호 ORG의 의미
기호 ORG는 기계 명령어가 아니고 단지 다음에 오는 명령어의 메모리 영역이 어디인가를 기술해줍니다. 피연산자가 십진수임을 기호 DEC 로 표시하며 음수일 경우는 부호화된 2의 보수 표현으로 나타냅니다. 마지막의 END는 프로그램의 끝을 나타냅니다. 위와 같은 동작을 실행하는 포트란 프로그램이 표 6-6에 기재되어 있습니다. A 와 B에 대한 값은 입력문이나 데이타문에 의해 기술되며, 이러한 포트란 프로 그램은 가수와 피가수, 그리고 합의 각각에 메모리 영역을 할당하여 가산 동작 을 실행하는 이진 명령어로 구성된 이진 프로그램으로 번역됩니다. 따라서 컴파 일러 프로그램은 포트란 프로그램의 기호를 표 6-2의 이진수로 번역하게 됩니다.
댓글