PDP 어셈블리 (PDP-11 MACRO-11)
PDP 어셈블리 (PDP-11 MACRO-11)
1. 한 줄 요약
PDP-11 은 1970년 DEC 가 발표한 16 비트 미니컴퓨터로, 직교적(orthogonal) 명령어 집합 과 MACRO-11 어셈블러를 통해 어셈블리 프로그래밍을 한 단계 끌어올렸고, 그 위에서 Unix 와 C 가 탄생하면서 컴퓨터 역사의 결정적 분기점을 만들었다.
2. 등장 시기·배경
PDP-11(Programmed Data Processor 11)은 1970년 Digital Equipment Corporation(DEC)이 발표한 16 비트 미니컴퓨터 계열이다. 위키피디아는 "developed by Digital Equipment Corporation (DEC)" 이라고 기록하며, 1970년대~1980년대 학계와 산업계의 주력 미니컴퓨터로 자리매김한 사실을 강조한다.
PDP-11 의 결정적 의미는 그 위에서 일어난 두 가지 사건이다.
- Unix(1970~1973) — Bell Labs 의 Ken Thompson·Dennis Ritchie 가 PDP-11 위에서 Unix 를 개발. 이전의 PDP-7 에서 시작된 작업이 PDP-11 위에서 본격화.
- C 언어(1972) — Dennis Ritchie 가 PDP-11 의 어셈블리(MACRO-11)를 대체 하기 위해 C 를 개발. C 의 모든 기본 타입(char·int·short·long)·포인터 산술·배열 접근 방식이 PDP-11 의 명령어 집합에 직접 대응하도록 설계됨.
위키피디아 표현 "The architecture's flexibility enabled researchers at Bell Labs to develop and refine Unix" 가 핵심을 압축한다.
3. 핵심 특징
- 직교적 명령어 집합 (orthogonal instruction set) — 위키피디아 표현 "orthogonal instruction set". 어떤 명령이든 어떤 주소 지정 모드와도 결합 가능. 명령 종류 × 주소 지정 모드의 모든 조합 이 의미를 가지는 우아한 설계. 학생들이 예외 없이 학습 가능 한 첫 어셈블리.
- 8 개 범용 레지스터 — 위키피디아가 명시하는 "eight general-purpose registers". 이전 컴퓨터들의 누산기(accumulator) 중심 설계와 달리, 모든 레지스터가 동등하게 사용 가능. 컴파일러 작성이 극적으로 쉬워졌다.
- 8 가지 주소 지정 모드 (addressing modes) — 레지스터 간접·자동 증감(post-increment / pre-decrement)·인덱스·간접의 모든 조합. C 언어의 포인터 산술(
*p++등)이 PDP-11 의 명령어 한 줄에 1:1 대응 하는 이유. - MACRO-11 어셈블러 — 위키피디아 표현 "MACRO-11 is the assembly language for the PDP-11. It is the successor to PAL-11 (Program Assembler Loader)". 매크로 기능, 조건부 어셈블리, 위치 독립 코드 생성을 지원.
- 가변 길이 명령어 (2~6 바이트) — 단순 명령은 짧고, 복잡한 명령은 길어 메모리 효율적. 후일 x86 의 가변 길이 명령어 형식의 직접적 선조.
4. 주 용도
1970~1980년대 미니컴퓨터 시대의 주력 플랫폼. 위키피디아는 "PDP-11 minicomputers dominated 1970s-1980s computing in academia and industry" 라고 기록한다. 주된 응용은 다음과 같이 정리된다.
- 운영체제 개발 — Unix 의 발상지. RT-11·RSX-11·RSTS/E 같은 DEC 의 자체 OS 들도 함께 개발.
- 학계 연구 — 미국·유럽 대학의 컴퓨터 과학 학과 표준 장비. Operating System Concepts 같은 고전 교과서들이 PDP-11 위의 Unix 를 예제로 사용.
- 임베디드·산업 제어 — 공장 자동화, 의료기기, 군사 시스템에 광범위 도입.
- 첫 워드 프로세서 시스템 — Wang Laboratories 의 워드 프로세서가 PDP-11 기반.
5. 그 시대의 설계 도구 매핑 ★
PDP-11 시대(1970년대)는 SE(소프트웨어 공학) 가 학문으로 정착한 시기와 정확히 겹친다. 1968년 NATO 컨퍼런스에서 "software crisis" 라는 용어가 등장한 직후, PDP-11 / Unix 가 모듈러 SE 설계 의 실험장이 되었다.
| 설계 도구 | 역할 |
|---|---|
| 플로차트 | 여전히 1차 설계 언어. 다만 루프·서브루틴 같은 구조화 요소가 추가됨. |
| ★ 의사코드 (pseudocode) | 1970년대 정착. 알고리즘을 언어 중립적 으로 표현하는 새 도구. C 와 어셈블리 사이의 공통 표기 역할. |
| ★ 모듈 분할 다이어그램 (module decomposition) | David Parnas 의 information hiding(1971) 이 PDP-11 / Unix 환경에서 실험. 어떤 모듈이 무엇을 숨기는가 를 그림으로 사전 결정. |
| ★ 헤더 파일 (header file) | C 언어의 헤더 파일은 인터페이스 명세를 코드와 분리한 첫 산업 표준. 설계 단계의 산출물이 그대로 코드로 들어가는 살아있는 설계 문서. |
| ★ Unix man page | 인터페이스 문서가 시스템 자체에 내장 되는 첫 사례. 코드 옆에 영구 기록된 설계 문서. 현대 LLMWiki 의 가장 직접적 선조 중 하나. |
| MACRO-11 매크로 라이브러리 | EDSAC(1951) 카탈로그·SHARE(1955) 라이브러리의 직접 계승. |
핵심은 설계 단위 가 한 차원 더 올라간 것이다. EDSAC 시대의 서브루틴 에서, PDP-11 시대의 모듈 로. 강의 핵심 명제 — 설계의 중요성은 일관되었다 — 의 1970년대 표현은 "코드를 짜기 전에 모듈 경계를 먼저 결정한다" 가 된다. 이는 현대 마이크로서비스·헥사고날 아키텍처와 동일한 사상이다.
6. 언어 그룹 분류
MACRO-11 은 저수준 어셈블리. 명령형·절차형. 그 위에 얹힌 C 언어는 저수준 추상화의 고급 언어 라는 새 범주를 만들었다 — 즉 어셈블리에 가까운 성능을 내면서도 함수·타입·구조체를 가진 언어. C 의 등장은 어셈블리어 직접 사용의 종말 을 사실상 시작했다.
7. 강의 도입 활용 포인트
PDP-11 / MACRO-11 / Unix / C 는 하드웨어·언어·운영체제·SE 방법론이 한 패키지로 진화한 역사상 가장 영향력 큰 사례다. 80년대 이후 모든 시스템(Windows·Linux·macOS·iOS·Android)이 결국 PDP-11 의 후예 다. 본 강의는 이 4 가지가 각각이 아니라 함께 진화했음을 강조함으로써, AI Native 시대의 모델·프롬프트·하네스·CLAUDE.md 가 다시 한 패키지로 함께 진화 중 이라는 현재의 위치를 기록한다.
출처
- Wikipedia, PDP-11 architecture, https://en.wikipedia.org/wiki/PDP-11_architecture
- Wikipedia, MACRO-11, https://en.wikipedia.org/wiki/MACRO-11
- Wikipedia, C (programming language), https://en.wikipedia.org/wiki/C_(programming_language)
그룹 시리즈
→ synthesis/group-g1 (시대 그룹 종합 카드)