diff options
| author | krolxon <krolyxon@tutanota.com> | 2026-01-08 19:21:43 +0530 |
|---|---|---|
| committer | krolxon <krolyxon@tutanota.com> | 2026-01-08 19:21:43 +0530 |
| commit | 467ec78e894c8184144bfac039dc7d780abbd050 (patch) | |
| tree | 048d9f8c4e43a88993f0c1f4e15d92df612dc46b /src/assembler.rs | |
| parent | 4667df1425e3414e163c63754d01d9b0b3a2f488 (diff) | |
add SYS instruction
Diffstat (limited to 'src/assembler.rs')
| -rw-r--r-- | src/assembler.rs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/assembler.rs b/src/assembler.rs index 73dec00..784337b 100644 --- a/src/assembler.rs +++ b/src/assembler.rs @@ -26,6 +26,7 @@ fn is_reg(s: &str) -> bool { fn instr_size(tokens: &[String]) -> u16 { match tokens[0].as_str() { "mov" | "add" | "sub" | "jmp" | "jz" | "jnz" | "cmp" | "mul" | "div" | "call" => 3, + "sys" => 2, "hlt" | "ret" => 1, _ => panic!("Unknown instruction {}", tokens[0]), } @@ -190,6 +191,12 @@ pub fn assembler(source: &str) -> Vec<u8> { bytes.push(Instruction::HLT as u8); } + "sys" => { + let imm = tokens[1].parse().unwrap(); + bytes.push(Instruction::SYS as u8); + bytes.push(imm); + } + _ => panic!("Line {}: unknown instruction", line_no + 1), } } |
