Page 67 - 컴퓨터구조(프로그래밍 관점에서 바라보는)도서 미리보기
P. 67

279CHAPTER 7? 기계어 프로그래밍을 통한 컴퓨터 구조 이해

이제 앞에서 인스트럭션의 의미를 모른채 실행했던 ‘Hi’를 출력하는 프로
그램을 자세히 분석해보자. 위의 프로램을 2진수로 표현하면 다음과 같다.
아래 표에서 가장 왼쪽의 칼럼 ‘메모리 주소’는 실제로 기계어 프로그램이
메인 메모리에 로드되었을때의 메모리 주소를 의미한다. Pep/8에서는 사
용자가 작성한 프로그램이 무조건 0번지부터 로딩된다. 따라서 0101 0000
0000 0000 0100 1000이라는 3바이트로 된 첫번째 명령어가 메인 메모리의
0,1,2번지에 위치해 있음을 알 수 있다.

 메모리 주소          기계어(16진수) 표현               기계어(2진수) 프로그램

0000       50 00 48                0101 0000 0000 0000 0100 1000
0003       50 00 69                0101 0000 0000 0000 0110 1001
0006       00                      0000 0000
           zz

이제 우리가 CPU 내부의 CU(control unit)이라고 생각하고, 인스트럭                     yy01010: character
션을 하나씩 분석해보자. 아래와 같이 첫번째 인스트럭션은 opcode,                             output instruction.
addressing mode, operand specifier 필드로 분할된다.                        앞 페이지의 <인스트럭
                                                                    션 테이블>을 참조하자.
Opcode              어드레싱 모드                    피연산자 지시자             character output 명령어
                (addressing mode)           (operand specifier)     는 오퍼랜드 한 바이트를
                                                                    화면에 출력하는 명령어
01010      000                     0000 0000 0100 1000
                                                                  yy0 0 0 : i m m e d i a t e
어떻게 위와 같이 분석할 수 있을까? 그 방법은 Pep/8 가상 머신의 코드                          addressing mode
테이블에 답이 있다. 코드 표를 보면 아래와 같이 character output 명령어
의 형식이 적혀있다. 01001이라는 opcode는 ASCII 문자 하나를 화면에 출                   yy0000 0000 0100 1000:
력하는 명령어다.                                                           문자 ‘H’의 ASCII 값

0101 0aaa       Character output

yyopcode가 01010 이라는 말은 character output이라는 명령어이고
   62   63   64   65   66   67   68   69   70   71   72