---
# System prepended metadata

title: System programming 1
tags: [SystemProgramming, 110-1, NTNU, CSIE, 選修]

---

---
title: System programming 1
---
# System Programming
NTNU 系統程式
##### [Back to Note Overview](https://reurl.cc/XXeYaE)
##### [Back to System Programming](https://hackmd.io/@NTNUCSIE112/SP110-1)
{%hackmd @sophie8909/pink_theme %}
###### tags: `SystemProgramming` `110-1` `CSIE` `選修` `NTNU`
<!-- tag順序 [學校] [系 必選]  or  [學程 學程名(不含學程的 e.g. 大師創業)] [課程] [開課學期]-->
<!-- 網址名稱 SP110-1_[] -->
## Ch.01 Background
### 1.1 Introduction
- Definition
    - 由支持計算機操作的各種程式組成
### 1.2 System Software and Machine Architecture
### 1.3 The Simplified Instructional Computer (SIC)
- Simplified Instructional Computer(SIC)
    - Comes in two versions
        - The Standard model
        - An XE version(extra equipments, extra expensive)
    - The two versions has been designed to be **upward compatible**
#### 1.3.1 SIC Machine Architecture
- Memory
  - consists of 8-bits bytes
  - word: 3 consecutive bytes(24 bits)
  - total: **2^15^ bytes**
- Registers
  - 5 registers
    - 24 bits length (each)
        | Mnemonic | Number | Special use      |
        | -------- | ------ | ---------------- |
        | A        | 0      | Accumulator      |
        | X        | 1      | Index register   |
        | L        | 2      | Linkage register |
        | PC       | 8      | Program counter  |
        | SW       | 9      | Status word      | 
- Data Formats
    - Integers are stored as **24-bit binary number**
    - **2’s complement** representation for negative values
    - Characters are stored using **8-bit ASCII codes**(at right most bits)
    - **No floating-point** hardware on the standard version of SIC
- Instruction Formats
    - Standard version of SIC
    - 24 bits
        | opcode | x | address |
        | ------ | - | ------- |
        | 8      | 1 | 15      |
    The flag bit $x$ is used to indicate **indexed-addressing mode**
- Buses
    - Data Bus: 24/8 bits
    - Address Bus: 15 bits
- Addressing Modes
    - There are two addressing modes available, indicated by x bit in the instruction
        | Mode    | Indication | Target Address calculation |
        | ------- | ---------- | -------------------------- |
        | Direct  | x=0        | TA=address                 |
        | Indexed | x=1        | TA=address=($X$)           |
    <font color=red>($X$)</font>: the contents if register $X$  
#### 1.3.2 SIC/XE Machine Architecture
- Memory
    - Maximum memory available on a SIC/XE system is 1 megabyte($2^{20}$bytes)
- Instruction format
    - Format 1(1 bytes)
        | op  |
        | --- |
        | 8   |
        - Ex.
            | Mneminic | Format | Opcode | Effect                       |
            | -------- | ------ | ------ | ---------------------------- |
            | FIX      | 1      | C4     | A <- (F)[convert to integer] |
    - Format 2(2 bytes)
        | op  | r1  | r2  |
        | --- | --- | --- |
        | 8   | 4   | 4   |
    :::warning 
    Format 1 & 2 are instructions that **do not** reference memory at all.
    :::
    - Format 3(3 bytes)
        | op  | n   | i   | x   | b   | p   | e   | disp |
        | --- | --- | --- | --- | --- | --- | --- | ---- |
        | 6   | 1   | 1   | 1   | 1   | 1   | 1   | 12     |
    - Format 4(4 bytes)
        | op                        | n          | i                                    | x   | b   | p   | e   | address |
        | ------------------------- | ---------- | ------------------------------------ | --- | --- | --- | --- | ------- |
        | 6                         | 1          | 1                                    | 1   | 1   | 1   | 1   | 20      |
    - Addressing mode for format 3

        | Mode                     | Indication | Target address calculation                    | Notes                                  |
        | ------------------------ | ---------- | --------------------------------------------- | -------------------------------------- |
        | Base relative            | b=1, p=0   | TA=(B)+disp <br>($0\leq disp \leq 4095$)      |                                        |
        | Program-counter relative | b=0, p=1   | TA=(PC)+disp <br>($-2048\leq disp \leq 2047$) | 指令跟指令的間隔通常小於$2^{12}$ |
- Registers
    - Additional registers are provided by SIC/XE
        | Mnemonic | Number | Special Use                         |
        | -------- | ------ | ----------------------------------- |
        | B        | 3      | Base register                       |
        | S        | 4      | General working register            |
        | T        | 5      | General working register            |
        | F        | 6      | Floating point accumulator(48 bits) |
- 48-bit floating-point data type (他說不重要)
- Instruction Format
    - 15 bits in SIC
    - 20 bits in SIC/XE
<!-- class note text book p.10 -->
:::danger
**About n, i, x, b, p, e !**
:::
- Target address
    > n, i: how to use the target address(TA)

    | n   | i   |                                         |
    | --- | --- | --------------------------------------- |
    | 1   | 1   | Direct(Simple) addressing               |
    | 1   | 0   | Indirect addressing (尋寶遊戲)                     |
    | 0   | 1   | Immediate addressing (no memory access) | 
    | 0   | 0   | 相容 SIC                                |
- e 
    | e   | Format   |
    | --- | -------- |
    | 0   | format 3 |
    | 1   | format 4 | 

- About TA 計算
    | Mode                          | Indication | Target address calculation                        | Notes                            |
    | ----------------------------- | ---------- | ------------------------------------------------- | -------------------------------- |
    | Base relative mode            | b=1, p=0   | TA=(B)+disp+(X) <br>($0\leq disp \leq 4095$)      |                                  |
    | Program-counter relative mode | b=0, p=1   | TA=(PC)+disp+(X) <br>($-2048\leq disp \leq 2047$) | 指令跟指令的間隔通常小於$2^{12}$ |



#### SIC Programming Examples
```SIC=
    LDA    ZERO
    STA    INDEX
```
x = a + b * c
y = x * a
```SIC=
LDA b
MUL c
ADD a
STA x
LDA x
MUL a
STA y
```
### 1 4 Traditional (CISC) Machines
### 1.5 RISC Machines


*[Mnemonic]: 助憶符
*[upward compatible]: 向上兼容
