A Java-based simulator that loads and executes SIC/XE object programs with a visual touch.
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.
- ✅ Load and parse
.objfiles (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
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- Prepare an
.objobject file - Run the program
- Use the file selection button to load your object file
- Click Step to execute one instruction at a time, or All to run everything
- Watch registers, memory, devices, and logs update in real time
- 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
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!