System Programming 제1장 배경지식 시스템 프로그래밍
1.1 시스템 소프트웨어의 개요 응용 프로그램(Applications) 운영체제(Operating System) 어셈블러 (Assembler) 컴파일러 (Compiler) 로더 (Loader) 링커 (Linker) 에디터 (Editor) . . . 시스템 소프트웨어 (System Software) 운영체제(Operating System) 하드웨어(Hardware) 사용자의 요구에 맞게 컴퓨터를 사용 가능하게 해줌 주요 주제 어셈블러, 로더와 링커, OS, 컴파일러 시스템 프로그래밍
(Mnemonic Instruction) 1.2 시스템 소프트웨어와 기계 구조 시스템 소프트웨어 컴퓨터 자체의 운영 및 사용을 지원 컴퓨터의 기계 구조와 연관(기계종속적) 기계 구조와의 연관(예) 어셈블러 명령어 형식 주소지정 방식 연상 명령어 (Mnemonic Instruction) 기계 코드 (Machine Code) 컴파일러 레지스터 개수, 용도 사용가능 명령어 소스 코드 (Source Code) 기계 코드 (Machine Code) 시스템 프로그래밍
응용 S/W와 시스템 S/W System Software Application Software 시스템 제어 응용 프로그램의 수행 시스템 자원의 관리 응용 데이터의 관리 프로그래머 또는 응용 프로그램에 서비스 제공 단말 사용자에 서비스 제공 어셈블러로 작성 고급언어로 작성 컴퓨터 전원이 있는 동안 실행 프로그램이 종료 때까지만 실행 시스템 프로그래밍
컴퓨터 구조 메모리 : 정보의 저장 프로세서 : 정보의 조작 입출력 장치 : 정보의 입출력 주소(address)에 의한 위치의 지정 프로세서 : 정보의 조작 메모리내의 명령어의 순서에 의한 동작을 수행 입출력 장치 : 정보의 입출력 입출력 모듈에 의한 데이터의 입출력 담당 Word의 내용 데이터 명령어(Instruction) : OPCODE + OPERAND 프로그램 순서화된 명령어의 집합 시스템 프로그래밍
누산기(Accumulator) : 산술 연산 1.3.1 단순 명령어(SIC) 00000 메모리(32,768bytes) 1 byte = 8bit 1word = 3개의 연속적인 byte word의 주소는 최하위 byte의 주소 레지스터(각 레지스터의 길이 : 24bits) Word 00001 00002 ….. 32767 연상 번호 용도 A 누산기(Accumulator) : 산술 연산 X 1 인덱스 레지스터 : 주소 지정 L 2 링크 레지스터: 점프 명령어의 귀환주소 저장 PC 8 프로그램 계수기 : 다음 명령의 주소 저장 SW 9 상태 워드 : 조건 코드 포함, 다양한 정보 시스템 프로그래밍
1.3.1 단순 명령어(SIC) 8 1 15 opcode x address 데이터 형식 명령어 형식 정수 : 24bits의 2진수(2의 보수) 문자 : ASCII 코드 명령어 형식 모든 명령어 : 24bits 형식 x는 주소 지정 방식을 정하기 위한 플래그 비트 주소 지정 방식(Addressing Mode) 직접 주소 지정 방식 x = 0 ; TA(목표 주소) = address 인덱스 주소 지정 방식 ((X) : 레지스터 X의 내용 ) x = 1 ; TA(목표 주소) = address + (X) 8 1 15 opcode x address 시스템 프로그래밍
1.3.1 단순 명령어(SIC) 명령어 집합(Instruction Set) 입력과 출력 읽고 쓰는 명령어 : LDA, LDX, STA, STX 정수 연산 명령어: ADD, SUB, MUL, DIV COMP: 레지스터 A의 값과 메모리의 한 word 값의 비교 조건부 점프 명령어 : JLT, JEQ, JGT 서브루틴 연결(Subroutine linkage) JSUB: 레지스터 L에 귀환 주소 저장, 서브루틴으로 점프 RSUB: 레지스터 L에 있는 주소로 귀환 입력과 출력 레지스터 A의 가장 오른쪽 바이트에서 전송하거나 받음 TD(Test Device) : 전송하거나 받을 준비가 되어 있는지 조사 Condition code : < (준비), =(작업중) RD m: A[rightmost byte] <-- (m)에서 지정한 장치의 데이터 WD m: (m)이 지정한 장치 <-- (A) [rightmost byte] 시스템 프로그래밍
1.3.2 단순 명령어(SIC/XE) 36 1 11 S 지 수 소 수 메모리 레지스터 데이터 형식 1MB -> 명령어의 형식과 주소지정 방식 변화 레지스터 데이터 형식 SIC와 같은 형태 48bits의 부동 소수점 데이터 연상 번호 용도 B 3 베이스 레지스터 : 주소 지정 S 4 범용 레지스터 T 5 F 6 부동 소수점 누산기(48bits) 36 1 11 S 지 수 소 수 시스템 프로그래밍
1.3.2 단순 명령어(SIC/XE) opcode opcode r1 r2 opcode n i x b p e disp 명령어 형식 메모리 용량의 확대 → 15bits 필드에 맞지 않음 두 가지의 가능한 형태 상대 주소 지정 방식과 20bits로 확장하는 형식 형식 1 형식 2 형식 3( e = 0 ) 형식 4 ( e = 1 ) 8 opcode 8 4 4 opcode r1 r2 6 1 1 1 1 1 1 12 opcode n i x b p e disp 6 1 1 1 1 1 1 20 opcode n i x b p e address 시스템 프로그래밍
1.3.2 단순 명령어(SIC/XE) 주소지정 방식(3 형식) 플래그 비트의 사용 베이스(B) 상대 주소 지정( b=1, p=0 ) TA = (B) + disp(0-4095) disp의 값은 unsigned integer로 해석 프로그램 계수기(PC) 상대 주소 지정 ( b=0, p=1 ) TA = (PC) + disp(-2048-2047) disp의 값은 signed integer(2의 보수)로 해석 플래그 비트의 사용 직접(direct) 주소 지정 방식(b=0, p=0) 형식 4 명령어는 b=0, p=0 이어야 함 인덱스 주소 지정 방식(x=1) (X)를 TA를 구하는 데 더한다. 즉시(immediate) 주소 지정 방식(i=1, n=0) 주소(address)에 있는 값을 피연산자로 사용 간접(indirect) 주소 지정 방식(i=0, n=1) TA에 의해 지정된 위치의 위드에 있는 값을 피연산자로 사용 시스템 프로그래밍
. 3030 003600 3600 103000 6390 00C303 C303 003030 ① ② ③ ④ ⑤ ⑥ 600 300 030 3600 C303 n=0, i=1 p=1 + n=1, i=0 p=1 + x=1 b=1 + + 000090 X 006000 B 003000 PC 시스템 프로그래밍
SIC/XE 명령어와 주소 지정 방식의 예(그림 1.1) 기계 명령어 목표 주소 레지스터 A에 로드되는 값 16진수 2진수 Opcode n i x b p e disp/address 032600 000000 1 1 0 0 1 0 0110 0000 0000 3600 103000 03C300 000000 1 1 1 1 0 0 0011 0000 0000 6390 00C303 022030 000000 1 0 0 0 1 0 0000 0011 0000 3030 010030 000000 0 1 0 0 0 0 0000 0011 0000 30 000030 003600 000000 0 0 0 0 1 1 0110 0000 0000 0310C303 000000 1 1 0 0 0 1 0000 1100 0011 0000 0011 C303 003030 LDA 명령어 시스템 프로그래밍
1.3.2 단순 명령어(SIC/XE) 명령어 집합 입력과 출력 레지스터 명령어 추가 : LDB, STB 등 부동 소수점 산술 연산 : ADDF, SUBF, MULF, DIVF 레지스터로부터 피연산자 가져오는 명령어 : RMO 레지스터-레지스터 연산 : ADDR, SUBR, MULR, DIVR 감독자 호출 : SVC 입력과 출력 CPU가 다른 명령을 수행하는 동안 입력과 출력을 수행할 수 있는 입출력 채널 입출력 채널의 동작 명령어 : SIO, TIO, HIO 시스템 프로그래밍