|
1 | 1 | use crate::{ |
2 | 2 | assembler::{MaybeUnresolvedInstr, Op, PseudoOp, Token}, |
3 | 3 | defs::LC3Word, |
4 | | - instruction::{ADD_OPCODE, AND_OPCODE, ALL_JUMP_OPCODES, BRANCH_OPCODE, JSR_OPCODE, ALL_LOAD_OPCODES, ALL_STORE_OPCODES, TRAP_OPCODE}, |
| 4 | + instruction::{ADD_OPCODE, AND_OPCODE, ALL_JUMP_OPCODES, BRANCH_OPCODE, JSR_OPCODE, ALL_LOAD_OPCODES, ALL_STORE_OPCODES, TRAP_OPCODE, NOT_OPCODE}, |
5 | 5 | }; |
6 | 6 | use anyhow::{bail, Result}; |
7 | 7 |
|
@@ -98,10 +98,38 @@ pub fn construct_instruction_pass(token_chain: &[Token]) -> Result<Vec<MaybeUnre |
98 | 98 | Op::AND => ( |
99 | 99 | AND_OPCODE, |
100 | 100 | [check_reg::<9>, check_reg::<6>, check_reg_or_offset::<0, 5>].as_slice()), |
101 | | - Op::LD => (ALL_LOAD_OPCODES[0], [check_reg::<9>, check_offset::<0, 0>].as_slice()), |
102 | | - Op::LDI => (ALL_LOAD_OPCODES[1], [check_reg::<9>, check_offset::<0, 0>].as_slice()), |
103 | | - Op::LDR => (ALL_LOAD_OPCODES[2], [check_reg::<9>, check_reg::<6>, check_offset::<0, 6>].as_slice()), |
104 | | - Op::LEA => (ALL_LOAD_OPCODES[3], [check_reg::<9>, check_offset::<0, 0>].as_slice()), |
| 101 | + Op::LD => ( |
| 102 | + ALL_LOAD_OPCODES[0], |
| 103 | + [check_reg::<9>, check_offset::<0, 0>].as_slice() |
| 104 | + ), |
| 105 | + Op::LDI => ( |
| 106 | + ALL_LOAD_OPCODES[1], |
| 107 | + [check_reg::<9>, check_offset::<0, 0>].as_slice() |
| 108 | + ), |
| 109 | + Op::LDR => ( |
| 110 | + ALL_LOAD_OPCODES[2], |
| 111 | + [check_reg::<9>, check_reg::<6>, check_offset::<0, 6>].as_slice() |
| 112 | + ), |
| 113 | + Op::LEA => ( |
| 114 | + ALL_LOAD_OPCODES[3], |
| 115 | + [check_reg::<9>, check_offset::<0, 0>].as_slice() |
| 116 | + ), |
| 117 | + Op::ST => ( |
| 118 | + ALL_STORE_OPCODES[0], |
| 119 | + [check_reg::<9>, check_offset::<0, 0>].as_slice() |
| 120 | + ), |
| 121 | + Op::STI => ( |
| 122 | + ALL_STORE_OPCODES[1], |
| 123 | + [check_reg::<9>, check_offset::<0, 0>].as_slice() |
| 124 | + ), |
| 125 | + Op::STR => ( |
| 126 | + ALL_STORE_OPCODES[2], |
| 127 | + [check_reg::<9>, check_reg::<6>, check_offset::<0, 6>].as_slice() |
| 128 | + ), |
| 129 | + Op::NOT => ( |
| 130 | + NOT_OPCODE, |
| 131 | + [check_reg::<9>, check_reg::<6>].as_slice() |
| 132 | + ), |
105 | 133 | _ => todo!(), |
106 | 134 | }; |
107 | 135 |
|
|
0 commit comments