‘멜의 이야기(Story of Mel)’ 해부하기

1 day ago 6

초기 프로그래밍 일화 ‘Story of Mel’의 핵심 트릭을 RPC-4000 명령어 체계와 대조하면, 주소 오버플로로 명령을 바꾸는 방식은 가능하지만 일부 기술적 설명은 맞지 않음 Index 비트는 일화의 설명과 달리 주소와 연산 코드 사이가 아니라 명령어의 최하위 비트에 있어, 주소 오버플로 자체에는 영향을 주지 않음 자기 수정 코드의 실제 동작에는 자기 드럼 메모리의 접근 시간이 중요하며, 배열을 같은 섹터의 서로 다른 트랙에 배치했다면 빠른 메모리를 아끼면서 주소 오버플로도 일으킬 수 있었을 가능성이 있음 가능한 명령 변환 세 가지 중 SBL을 SNS로 바꾸는 가설이 일화에 가장 잘 들어맞으며, Index 비트가 없으면 프로그램이 정지하므로 해당 비트가 결정적 단서였다는 기억도 설명할 수 있음 다만 실제 구현은 아직 확인되지 않았으며, SNS 가설에도 추가 조건이 필요하고 원본 RPC-4000 Blackjack 프로그램이 발견돼야 확정적인 답을 얻을 수 있음 ‘Story of Mel’의 실재성과 검증 대상 ‘Story of Mel’은 추상화나 모듈화보다 기계의 세부 동작을 활용해 실행 주기와 메모리 한 워드까지 아끼던 초기 프로그래밍 문화를 담은 일화임 배경은 Royal Precision이 전시회용 Blackjack 데모를 LGP-30에서 RPC-4000으로 옮긴 뒤인 1960년 무렵임 원래 프로그래머 Mel이 회사를 떠난 뒤 Ed Nather가 작은 버그 수정을 맡았고, 고도로 최적화된 코드를 해독하는 데 어려움을 겪음 Ed는 이 경험을 1983년 Usenet에 게시함 Mel Kaye는 실존 인물이며 RPC-4000 Blackjack을 실제로 작성함 이름은 Melvin Kornitzky에서 미국식으로 바꾼 것임 1956년 8월 Librascope 사보의 프로그래밍 강사 단체 사진, Blackjack 문서와 다른 프로그래밍 자료에 흔적이 남아 있음 Mel의 이력 조사 사이트에서 관련 자료를 확인할 수 있음 Mel이 정교한 최적화 트릭을 썼고 Ed가 해독에 애먹었다는 점을 의심할 이유는 없지만, 무한 루프처럼 보이는 코드에서 빠져나오는 방법에 관한 세부 설명은 보존된 RPC-4000 매뉴얼과 일부 충돌함 주소 오버플로와 Index 비트의 모순 일화 속 Mel은 자기 수정 코드로 배열을 순회함 명령어의 피연산자 주소를 증가시키고 수정된 명령어를 프로그램 메모리에 다시 저장함 RPC-4000이 제공하는 인덱스...

Read Entire Article