Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
8d9a5be
Link MSRV check to a minimal version in Cargo
Bennett-Petzold Dec 27, 2024
d66b856
Turn def comments into doc comments
Bennett-Petzold Dec 27, 2024
c0873e8
Add defs and update LC3 for keyboard ISR
Bennett-Petzold Dec 27, 2024
66ac11f
Add priority and privilege flags
Bennett-Petzold Dec 27, 2024
a434416
Add interrupt routine
Bennett-Petzold Dec 27, 2024
078e805
Add error emit to instructions
Bennett-Petzold Dec 28, 2024
ca62b7b
Implement RTI, add some jump tests
Bennett-Petzold Dec 28, 2024
a89bdeb
Add IAdd -> word, fix parse
Bennett-Petzold Dec 28, 2024
e4bcc61
Add And and Branch conversions
Bennett-Petzold Dec 28, 2024
09c2212
Add all jump conversions and tests
Bennett-Petzold Dec 29, 2024
e14fda0
Fully implement instruction -> LC3
Bennett-Petzold Dec 29, 2024
3a635a3
Implement execute for Core
Bennett-Petzold Dec 29, 2024
034d50b
Add TRAP instructions
Bennett-Petzold Dec 29, 2024
e50ddd7
Remove miri test
Bennett-Petzold Dec 29, 2024
3fcdf46
Add PennSim copy and test data from UNCA
Bennett-Petzold Dec 29, 2024
8b61fd5
Add basic test against PennSim
Bennett-Petzold Dec 30, 2024
29c1529
Fix trap definition by adding putsp
Bennett-Petzold Dec 30, 2024
f088e5b
Add hidden JMP opcode
Bennett-Petzold Dec 30, 2024
279768e
Add harnesses and expand core_unca test
Bennett-Petzold Dec 30, 2024
ddb65cc
Add line to line comparison with pennsim
Bennett-Petzold Dec 30, 2024
a52b4b9
Loop over all UNCA test cases; remove broken one
Bennett-Petzold Dec 31, 2024
aae814f
Add test utility for comparing against PennSim
Bennett-Petzold Dec 31, 2024
d9b7d63
Pass comparison with all UNCA programs
Bennett-Petzold Dec 31, 2024
3e656ff
Apply linter
Bennett-Petzold Dec 31, 2024
921f82b
Merge branch 'main' into trap
Bennett-Petzold Dec 31, 2024
0e445f5
Properly use rust_version in CI
Bennett-Petzold Dec 31, 2024
048efd6
Bump MSRV to 1.82
Bennett-Petzold Dec 31, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 16 additions & 28 deletions .github/workflows/all-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ jobs:
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@cargo-llvm-cov

- uses: awalsh128/cache-apt-pkgs-action@v1
with:
packages: default-jre

- name: Regular Tests
run: cargo llvm-cov test --no-report --tests --all-features

Expand Down Expand Up @@ -70,7 +74,7 @@ jobs:

- uses: awalsh128/cache-apt-pkgs-action@v1
with:
packages: libsodium-dev
packages: default-jre

- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
Expand All @@ -80,31 +84,6 @@ jobs:
cargo hack --each-feature build --ignore-private
cargo hack --each-feature test --ignore-private --no-run

# From https://github.com/rust-lang/miri
miri:
runs-on: ubuntu-latest
timeout-minutes: 30

environment:
name: ${{ github.ref_name != 'main' && 'testing' || 'unrestricted' }}

steps:
- uses: actions/checkout@v3

- uses: awalsh128/cache-apt-pkgs-action@v1
with:
packages: libsodium-dev

- name: Install Miri
run: |
rustup toolchain install nightly --component miri
rustup override set nightly
cargo miri setup
- name: Test with Miri
run: |
MIRIFLAGS="-Zmiri-disable-isolation" \
cargo miri test --all-features

# From https://doc.rust-lang.org/cargo/guide/continuous-integration.html#verifying-rust-version
# See https://crates.io/crates/cargo-hack
msrv:
Expand All @@ -119,13 +98,17 @@ jobs:

- uses: awalsh128/cache-apt-pkgs-action@v1
with:
packages: libsodium-dev
packages: |
jq

- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- uses: taiki-e/install-action@cargo-hack

- run: cargo hack check --version-range 1.79 --all-targets --all-features --ignore-private
- name: Test for MSRV in Cargo.toml
run: |
VERSION="$(cargo metadata --format-version 1 | jq '.packages | .[] | select(.name == "lc3sim")| .rust_version' | tr -d '"')"
cargo hack check --version-range "$VERSION" --all-targets --all-features --ignore-private

test:
strategy:
Expand Down Expand Up @@ -154,6 +137,11 @@ jobs:
with:
target: ${{ matrix.triple }}

- uses: awalsh128/cache-apt-pkgs-action@v1
if: ${{ matrix.os == 'ubuntu' }}
with:
packages: default-jre

- uses: Swatinem/rust-cache@v2

- run: cargo test --verbose --all-features
4 changes: 3 additions & 1 deletion .github/workflows/pages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,9 @@ jobs:
- uses: awalsh128/cache-apt-pkgs-action@v1
with:
packages: jq \
wget
wget |
default-jre


- uses: dtolnay/rust-toolchain@nightly
with:
Expand Down
16 changes: 16 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
[package]
name = "lc3sim"
version = "0.1.1"
rust-version = "1.82"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
Expand All @@ -13,8 +14,23 @@ path = "src/lib.rs"
name = "lc3sim"
path = "src/cli.rs"

[[bin]]
name = "testcli"
path = "src/testcli.rs"

[dependencies]
anyhow = "1.0.95"
once_cell = "1.20.2"
regex = "1.11.1"
# To reduce error boilerplate
thiserror = "2"

[dev-dependencies]
# To reduce getter boilerplate
derive-getters = "0.5"
# More efficient map initialization
once_map = "0.4"
# Reducing test writing boilerplate via macro
paste = "1"
# Random tempfile names
uuid = { version = "1", features = ["v4"] }
Binary file added penn_sim/PennSim.jar
Binary file not shown.
3 changes: 3 additions & 0 deletions penn_sim/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[PennSim.jar](https://acg.cis.upenn.edu/milom/cse240-Fall06/pennsim/PennSim.jar) and [lc3os.asm](https://acg.cis.upenn.edu/milom/cse240-Fall06/pennsim/code/lc3os.asm) were retrieved on December 29, 2024.
Both are provided by University of Pennslyvania, presumably by Milo M. K. Martin, for [CSE240](https://acg.cis.upenn.edu/milom/cse240-Fall06/pennsim/pennsim-guide.html).
The work is presumed to be provided for open source due to its distribution method.
Loading
Loading