Skip to main content

Simulation of SAP (Simple As Possible) computer programs from COMP311 (Computer Organization) @ UNC

Project description

Python 3.9+ badge PyPI version badge tests GitHub action badge codecov badge documentation badge

SAPsim

Simulation of SAP (Simple-As-Possible computer) programs from COMP 311 (Computer Organization) @ UNC.

SAPsim demo

Install

pip install SAPsim

Python 3.9+ is required. If your pip command doesn't work, use pip3[^alias].

[^alias]: Consider aliasing pip to pip3.

Usage

Write a SAP program in a CSV file using the format shown below.

Screenshot of ex1.csv in VSCode Edit CSV

ex1.csv

Two commented example programs are in public_prog/. Also, there's an empty template file here. Lastly, I recommend editing the CSV using VSCode's Edit csv extension or Excel.

To run the SAP program, open a Python terminal and use SAPsim.run().

>>> from SAPsim import run
>>> run("ex1.csv")                  # Run at full speed (default)
┌──────┬────────┬───────────────┬───────┬───────┐
 PC      Addr  Instruction      Dec  Hex   
├──────┼────────┼───────────────┼───────┼───────┤
            0  LDA 14            30  0x1e  
            1  SUB 13            61  0x3d  
            2  JZ 6             134  0x86  
            3  LDI 0             80  0x50  
            4  STA 15            79  0x4f  
            5  HLT 0            240  0xf0  
            6  LDI 1             81  0x51  
            7  STA 15            79  0x4f  
 >          8  HLT 0            240  0xf0  
           13  NOP 3              3  0x03  
           14  NOP 3              3  0x03  
           15  NOP 1              1  0x01  
└──────┴────────┴───────────────┴───────┴───────┘
┌───────┬───┐
 PC     8 
 Reg A  1 
 Reg B  3 
 FlagC  1 
 FlagZ  1 
└───────┴───┘
>>> run("ex1.csv", debug=True)      # Run in debug (step) mode
Initial state of simulation of tests/public_prog/ex1.csv
...
Debug mode: press Enter to execute next instruction ( > ).
...

Note: There is a debug (step) mode that runs an instruction each time you press Enter, as shown above. The default behavior is to run at full speed.

SAP instruction set

SAP instruction set

Settings

To customize table appearance, use table_format. Options.

>>> run("ex1.csv", table_format="github")
| PC   |   Addr | Instruction   |   Dec | Hex   |
|------|--------|---------------|-------|-------|
|      |      0 | LDA 14        |    30 | 0x1e  |
|      |      1 | SUB 13        |    61 | 0x3d  |
|      |      2 | JZ 6          |   134 | 0x86  |
|      |      3 | LDI 0         |    80 | 0x50  |
|      |      4 | STA 15        |    79 | 0x4f  |
|      |      5 | HLT 0         |   240 | 0xf0  |
|      |      6 | LDI 1         |    81 | 0x51  |
|      |      7 | STA 15        |    79 | 0x4f  |
| >    |      8 | HLT 0         |   240 | 0xf0  |
|      |     13 | NOP 3         |     3 | 0x03  |
|      |     14 | NOP 3         |     3 | 0x03  |
|      |     15 | NOP 1         |     1 | 0x01  |
|-------|---|
| PC    | 8 |
| Reg A | 1 |
| Reg B | 3 |
| FlagC | 1 |
| FlagZ | 1 |

To modify values in the SAP program without editing the CSV, use the change keyword argument.

>>> run("ex1.csv", change={14: 4, 13: 2})      # Change initial byte at address 14 to 4 and at 13 to 2
┌──────┬────────┬───────────────┬───────┬───────┐
 PC      Addr  Instruction      Dec  Hex   
├──────┼────────┼───────────────┼───────┼───────┤
            0  LDA 14            30  0x1e  
            1  SUB 13            61  0x3d  
            2  JZ 6             134  0x86  
            3  LDI 0             80  0x50  
            4  STA 15            79  0x4f  
 >          5  HLT 0            240  0xf0  
            6  LDI 1             81  0x51  
            7  STA 15            79  0x4f  
            8  HLT 0            240  0xf0  
           13  NOP 2              2  0x02  
           14  NOP 4              4  0x04  
           15  NOP 0              0  0x00  
└──────┴────────┴───────────────┴───────┴───────┘
┌───────┬───┐
 PC     5 
 Reg A  0 
 Reg B  2 
 FlagC  1 
 FlagZ  0 
└───────┴───┘

Rules

It's easy to just mimic the example programs, but if you need it, here are the rules for SAPsim programs.

Documentation

https://SAPsim.readthedocs.io

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

SAPsim-1.1.1.tar.gz (20.7 kB view details)

Uploaded Source

Built Distribution

SAPsim-1.1.1-py3-none-any.whl (22.8 kB view details)

Uploaded Python 3

File details

Details for the file SAPsim-1.1.1.tar.gz.

File metadata

  • Download URL: SAPsim-1.1.1.tar.gz
  • Upload date:
  • Size: 20.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for SAPsim-1.1.1.tar.gz
Algorithm Hash digest
SHA256 61569e4a9dacd71dd03dd10f9fd2d7a90f504d013fcf46f73f330331110596f9
MD5 f711ab51efd671a0c6856a76e5c58077
BLAKE2b-256 8d87c944634226b138bccc401b6540f6102951c56281b529c967bca6a43b55dc

See more details on using hashes here.

File details

Details for the file SAPsim-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: SAPsim-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 22.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for SAPsim-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c74249e26cb77f722c4ec92d47b4d39f923a74a21861b115331c3f806e9e9c70
MD5 4c58c82c08f27c56dbe34e38073c650d
BLAKE2b-256 29c09d9d9fc6d24c73d2db68f915da2d907bf8ea09a786f24c448937f70abc09

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page