Skip to content

son-hyejun/sicxe-simulator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

SIC/XE Simulator πŸ–₯️

A Java-based simulator that loads and executes SIC/XE object programs with a visual touch.


πŸš€ Overview

This project is a SIC/XE simulator that visually loads and executes object programs (.obj files) in a Java GUI environment.
It was developed as part of the System Programming course assignment, aiming to deeply understand loader mechanisms, instruction decoding, and the inner workings of the SIC/XE architecture.


✨ Features

  • βœ… Load and parse .obj files (Header, Define, Text, Modify, End records)
  • βœ… Decode and execute SIC/XE instructions (Format 2/3/4)
  • βœ… Support multiple addressing modes (Immediate, Indirect, Simple)
  • βœ… GUI-based step-by-step or full execution
  • βœ… Real-time visualization of registers, memory, and execution logs
  • βœ… Device I/O simulation via virtual file devices
  • βœ… Memory highlighting for current instructions

πŸ’‘ Architecture

src/
β”œβ”€ VisualSimulator.java # Controls loading & execution flow
β”œβ”€ SimulatorUI.java # Swing-based GUI (the pretty face)
β”œβ”€ ResourceManager.java # Memory, registers, and device manager
β”œβ”€ SicLoader.java # Parses and loads object programs
β”œβ”€ SymbolTable.java # Manages symbols and addresses
β”œβ”€ SicSimulator.java # Orchestrates instruction execution
└─ InstLuncher.java # Decodes opcodes & runs handlers

πŸ› οΈ How to Use

  1. Prepare an .obj object file
  2. Run the program
  3. Use the file selection button to load your object file
  4. Click Step to execute one instruction at a time, or All to run everything
  5. Watch registers, memory, devices, and logs update in real time

βš™οΈ Technical Highlights

  • Java Swing GUI with dynamic updates
  • 64KB virtual memory & comprehensive register set (A, X, L, B, S, T, F, PC, SW)
  • Loader with symbol resolution and relocation support
  • Flexible instruction decoding with opcode handlers
  • Virtual device file I/O simulation
  • Execution logs and memory highlighting for clarity

πŸ’¬ Conclusion

Through this project, I explored how programs are loaded and executed at a low level β€” far beyond "just running it."
I got to implement what’s usually under the hood: loaders, relocations, instruction decoding, and memory/register management.

"Not just a simulator, but a peek into the soul of your object code." πŸ‘€


πŸ‘©β€πŸ’» Check out my [GitHub profile](https://github.com/son-hyejun) for more!

About

SIC/XE architecture-based assembler & simulator for system programming class (2025)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages