[글을 시작하며]
일단은, 각 레지스터 정리 및 앞으로의 성찰을 적고자한다.
먼저 과제 3번인 SIC으로 스택 구현하기는 성공하지 못했다.
아무래도 추후에 쓸일이 없는 Sixtool 이니까,, 스택 구현하기는 하지 않기로 했다
다만, 주로 쓰이는 명령어 및 기본 개념을 정리하기로 마음 먹었다.
[SIC Machine Architecture]
1. 일반적인 Memory 구조
- 2차원 배열 구조인데 각 주소값을 가지는 걸로 이루어져있다
- cell 이라고 명하는 고정된 값으로 이루어져있다.
- 주소를 이용하면 빠르게 해당 메모리로 이용할 수 있다.
-> 단 , SIC 메모리는 8bit = 1byte ; 3 bytes = word 로 이루어져있다.
-> 가용 메모리 범위는 32kb이다. (2^15 bytes)
2. 각 레지스터 개념
- 이 개념을 명확히 익혀놔야 연산을 하거나 데이터를 넣고 뺼 때 알 수 있다.
- A : 연산을 위한 ( Accumulator )
- X : index 값을 저장하기 위한
- L : 특정한 address로 jumping 하기 위해 address 저장
- PC : 다음 address 위치를 가리키는 레지스터
- SW : cc 값 또는 conditional jump를 위해 있는 레지스터
* cc (condition code): comp(if문 같은거)같은 명령어를 상용했을때, 해당 true or < or > 값에 대한 T/F값을 저장
3. Machine Instruction Formats

모든 instruction은 기본적으로 24bit format ( 3bytes = 1word ) 구조를 가진다
이때 저 3개의 구조들의 조합으로 어떤 Mode인지 판단이 이루어진다.
1. x =1
Target Address = address + (X*)
* X : X 레지스터 값의 value를 더한 값이다. 위의 x(소문자) 아님
2. x =0
Target Address = address
4. Basic set of instruction
- 이걸 열심히 이해하고 코딩했어야는데 무작정 했더니 모든게 꼬여버렸다.
다음부터는 이론을 명확히 익히고 과제할 것,,
<시작>
LDA m : memory location 이 .. M,m+1,m+2 까지 3byte값을 (1 word)를 레지스터A 에 Load 시킨다

STA m : A 에 담겨있는 값을 m이 있는 위치에 저장한다.

<연산 operations>
ADD m : 위의 개념을 이용하여 A 레지스터 내부에서 m의 address 위치의 값을 가져와 덧셈 연산을 한다
SUB m : // 뺄셈 연산
MUL m : 곱하기 연산
DIV m : 나누기 연산
<비교 operations>
COMP m : 레지스터 a에 있는 값과 비교한다. 이를 cc ( conditional code ) 에 (< = >)를 확인한다.
JLT , JEQ, JGT m : m값보다 작은경우, 같은경우, 큰경우 -> 각 conditional jump 진행
* conditional jump 란, ex) JLT m
COMP를 통하여 판단한 < = > 값들에 대해 각 결과값을 m으로 Mapping 시켜준다.
<Subroutine linkage >
- Return 개념을 생각하면 쉬움 (RSUB)
- 함수 호출시 호출된 위치의 address를 기억하고 함수로 JUMP 시킴 (JSUB 한정) 이때 기억하는 과정은 레지스터 L에 마지막 위치를 저장하는 방식이용
- 함수 호출시 호출된 위치의 address는 기억하지 않는다 ( J )
- J 사용시에는 RSUB 사용시 저장된 L값으로 리턴한다.
< INPUT / OUTPUT >
- 시간당 1 byte 씩만 레지스터 A에 전송한다. 가장 맨 오른쪽 8 bits(1 byte)
- 이정도면 레지스터A는 극한직업이 아닐까,,
- 각 디바이스는 unique코드를 부여해야한다.
[SIC/XE Machine Architecture]
1. 메모리 구조
- 한계점 : 1mb
2. 추가적인 레지스터
B : addressing 을 사용하기 위해
S , T : 따로 연산작업 등으로 사용하는것이 아닌 그냥 register값을 이용함
F : 소수점 연산 지원
'System Programming' 카테고리의 다른 글
[System Programming #2] SIC & SIC/XE (2) | 2022.04.05 |
---|