프로그래밍기능사 CBT
종목 메뉴

개념 한 쪽

프로그래밍기능사 선택구문 — 언어 번역 프로그램과 0-주소 명령어

소스 코드를 기계가 이해하는 언어로 바꾸는 도구에는 어셈블러, 컴파일러, 인터프리터가 있다. 번역된 코드가 실제로 실행되려면 로더가 메모리에 적재한다. 명령어 형식과 CPU 동작 단계, 상태를 유지하는 제어 워드도 함께 구분한다.

2026-10-22 기준 · 프로그래밍기능사 대시보드

이 개념을 문제로 확인하고 싶으면 이 개념 문제 10개 풀기 회원용

가입 없이 오늘의 10문제 바로 풀기 →

뜻

언어 번역 프로그램은 고수준 언어나 어셈블리어를 기계어로 변환하는 소프트웨어다. 어셈블러는 어셈블리어를 기계어로 바꾸고, 컴파일러는 고수준 언어 전체를 한 번에 기계어로 번역해 목적 프로그램을 만든다. 인터프리터는 소스 코드를 한 줄씩 번역하면서 즉시 실행하며 목적 프로그램을 따로 만들지 않는다.

로더는 번역이 끝난 실행 파일이나 객체 파일을 메모리에 적재해 실행을 준비시키는 시스템 프로그램이다. 번역 기능이 없으므로 언어 번역 프로그램에 넣지 않는다. 이 구분은 번역과 적재라는 역할 차이에서 나온다.

명령어 형식은 주소 필드의 수로 나뉜다. 스택을 이용하는 연산은 피연산자가 스택 꼭대기에 있어 주소를 명령어에 적을 필요가 없으므로 OP 코드만으로 구성되는 0-주소 형식이 된다. 1-주소나 2-주소 형식은 피연산자의 위치를 지정해야 한다.

CPU는 명령어를 처리할 때 기억장치에서 명령어를 읽어 들이는 인출 단계를 거친다. 읽어 들인 명령어의 의미를 해석하는 해독 단계, 실제 연산을 수행하는 실행 단계, 결과를 저장하는 재기록 단계가 뒤따른다.

CPU의 실행 상태와 제어 정보를 담아 유지하는 제어 워드는 PSW다. 프로그램 상태 단어라고 하며 플래그와 모드 비트 같은 상태 정보를 포함한다. SP는 스택의 최상위 주소를 가리키고, MAR은 메모리 주소를, MBR은 메모리와 CPU 사이 데이터 전송을 담당하는 레지스터이므로 상태 제어 워드와 구분한다.

예제

언어 번역 프로그램을 묻는 문제는 번역기와 로더를 뒤섞어 선지를 만든다. 목적 프로그램 생성 없이 한 줄씩 번역해 실행하는 방식을 인터프리터로, 전체를 한 번에 번역해 실행 파일을 만드는 방식을 컴파일러로 가른다. 로더를 번역기로 넣으면 틀린 선지가 된다.

0-주소 형식은 주소 필드가 없고 스택 연산을 한다는 점으로 판별한다. 기억장치 액세스 없이 스택을 이용해 연산하는 명령어 형식을 물으면 0-주소 형식을 고른다. CPU 동작 단계는 기억장치에서 명령어를 읽어 들이는 인출 단계를 묻는 꼴로 나오며, 실행 중인 CPU의 상태를 포함하는 제어 워드는 PSW가 정답이 된다.

자주 묻는 물음

언어 번역 프로그램에는 무엇이 있고 무엇이 빠지나요?
어셈블러, 컴파일러, 인터프리터가 언어 번역 프로그램에 해당한다. 로더는 번역된 실행 파일을 메모리에 적재해 실행을 준비시키는 프로그램이므로 번역 프로그램이 아니다.
인터프리터와 컴파일러는 어떻게 다른가요?
인터프리터는 소스 코드를 한 줄씩 번역하여 즉시 실행하며 목적 프로그램을 만들지 않는다. 컴파일러는 전체 소스 코드를 한 번에 기계어로 번역한 뒤 실행 파일을 생성한다.
스택을 이용하는 연산이 0-주소 형식이 되는 이유는 무엇인가요?
연산할 데이터가 스택 꼭대기에 있어 명령어에 주소를 적을 필요가 없기 때문이다. OP 코드만으로 구성되므로 0-주소 형식이 된다.
이 개념 문제 10개 풀기 회원용

프로그래밍기능사 풀이 세트에서 이 개념의 문제 10개를 바로 풀어 보세요.