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!