Transcript Document

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