# [SP-4] SIC/XE 의 구조 (memory, reg, data format, ..)

SIC/XE는 SIC 의 업그레이드 버전입니다. 정확히 말하면 SIC에 feature 몇가지가 추가된 버전입니다.

SIC 의 기존 feature 들은 모두 SIC/XE 에서도 호환이 됩니다. (upper compatibility)


그렇기 때문에 이 글에서는 SIC/XE 에 추가된 feature 만을 언급하고 있습니다.

# Memory (SIC/XE)

  • 총 메모리 크기는 1MB (2의 20승)

# Registers (SIC/XE)

4개의 레지스터가 추가되어 SIC/XE는 총 9개의 레지스터를 갖습니다.

F 레지스터는 2 word (48 bits) 이며, 나머지 레지스터들은 각각 1 word (24 bits) 입니다.

Mnemonic Number 목적
B 3 Base register : Addressing 할때 사용
S 4 General working register
T 5 General working register
F 6 Floating Point Accumulator

# Data Format (SIC/XE)

48 bit 부동 소수점(floating point) 데이터 포맷이 추가 되었습니다.

아래와 같은 포맷을 갖습니다.

  • Float

    • S : 1 bit
    • Exponent : 11 bit
    • Fraction : 36 bit
  • 0 ≤ Fraction ≤ 1

  • 0 ≤ Exponent ≤ 2047

  • if S == 0, positive

  • if S == 1, negative

# Instruction Format (SIC/XE)

SIC/XE 에서는 4가지 Instruction Format 을 제공합니다.

  • format 1

    • 총 1 byte
    • OpCode(8bit)
    • 메모리에 reference 하지 않음
  • format 2

    • 총 2 byte
    • OpCode(8bit), reg1(4bit), reg2(4bit)
    • (reg1 을 r1 이라고 줄여 말하기도 한다. reg2는 r2로)
  • format 3

    • 총 3 byte
    • OpCode(6bit), n,i,x,b,p,e (각각 1bit 씩), disp (12bit)
    • n, i, x, b, p, e 는 flag bits 의 역할을 한다고 보면 된다.
    • e 가 0 이면 format 3 이다. e 가 extend 여부를 결정하는 flag 라고 생각 하면 된다
  • formt 4

    • 총 4 byte
    • OpCode(6bit), n,i,x,b,p,e (각각 1bit 씩), address (20bit)
    • e 가 1 이면 format 4 이다.

참고로 flag bits 중에 x 는 SIC 에도 있던 flag bit 인데, SIC 와 마찬가지로 SIC/XE 에서도 x == 1 이면 Index Addressing 이다. 하지만 SIC 에서는 x == 0 인 경우에는 반드시 Direct Addressing 이었는데, SIC/XE 에서는 x == 0 이더라도, 다른 flag bit 에 따라서 Addressing Mode 가 결정된다.

또한 SIC/XE에서는 Direct, Index Addressing 이외에도 몇가지 Addressing Mode 가 추가되었으며, 이에 대한 내용은 다음 글에서 다루도록 한다.