removed some useless code
This commit is contained in:
+6
-74
@@ -4,82 +4,14 @@ use assembler::{lexer, parser::Parser};
|
||||
use common::prelude::{ITypeArgs, Instruction, RTypeArgs, Register};
|
||||
|
||||
fn main() {
|
||||
// let program = fs::read_to_string("../resources/dsa/print.dsa").unwrap();
|
||||
// let tokens = lexer::lexer(program).unwrap();
|
||||
let program = fs::read_to_string("../resources/dsa/print.dsa").unwrap();
|
||||
let tokens = lexer::lexer(program).unwrap();
|
||||
|
||||
// println!("{:?}", tokens);
|
||||
println!("{:?}", tokens);
|
||||
|
||||
// let parser = Parser::new(tokens);
|
||||
let parser = Parser::new(tokens);
|
||||
|
||||
// for node in parser {
|
||||
// println!("{:?}", node);
|
||||
// }
|
||||
|
||||
// generate some instructions
|
||||
let ins = vec![
|
||||
// Initialize first two Fibonacci numbers
|
||||
// F(0) = 0, F(1) = 1
|
||||
|
||||
// Load 0 into Rg0 (F(0))
|
||||
Instruction::LoadLowerImmediate(ITypeArgs::new(0, None, Some(Register::Rg0))),
|
||||
// Load 1 into Rg1 (F(1))
|
||||
Instruction::LoadLowerImmediate(ITypeArgs::new(1, None, Some(Register::Rg1))),
|
||||
// Load loop counter (how many more numbers to calculate)
|
||||
// Let's calculate 8 Fibonacci numbers total (0,1,1,2,3,5,8,13)
|
||||
Instruction::LoadLowerImmediate(ITypeArgs::new(6, None, Some(Register::Rg2))), // 6 more iterations
|
||||
// Load 0 for comparison
|
||||
Instruction::LoadLowerImmediate(ITypeArgs::new(0, None, Some(Register::Zero))),
|
||||
// Fibonacci calculation loop starts here (address 4)
|
||||
// Calculate next Fibonacci number: F(n) = F(n-1) + F(n-2)
|
||||
Instruction::Add(RTypeArgs::new(
|
||||
Some(Register::Rg0), // F(n-2)
|
||||
Some(Register::Rg1), // F(n-1)
|
||||
Some(Register::Rg3), // F(n) result
|
||||
None,
|
||||
)),
|
||||
// Shift the sequence: Rg0 = Rg1, Rg1 = Rg3
|
||||
Instruction::Mov(RTypeArgs::new(
|
||||
Some(Register::Rg1),
|
||||
Some(Register::NoReg),
|
||||
Some(Register::Rg0),
|
||||
None,
|
||||
)),
|
||||
Instruction::Mov(RTypeArgs::new(
|
||||
Some(Register::Rg3),
|
||||
Some(Register::NoReg),
|
||||
Some(Register::Rg1),
|
||||
None,
|
||||
)),
|
||||
// Decrement counter
|
||||
Instruction::Decrement(RTypeArgs::new(
|
||||
Some(Register::Rg2),
|
||||
Some(Register::NoReg),
|
||||
Some(Register::Rg2),
|
||||
None,
|
||||
)),
|
||||
// Compare counter with 0
|
||||
Instruction::Compare(RTypeArgs::new(
|
||||
Some(Register::Rg2),
|
||||
Some(Register::Zero),
|
||||
Some(Register::NoReg),
|
||||
None,
|
||||
)),
|
||||
// Jump back to loop if counter > 0 (address 4)
|
||||
// JGT jumps if greater than flag is set
|
||||
Instruction::JumpGt(ITypeArgs::new(4, None, None)),
|
||||
// Program complete - the final Fibonacci number is in Rg1
|
||||
// Let's move it to the accumulator for easy access
|
||||
Instruction::Mov(RTypeArgs::new(
|
||||
Some(Register::Rg1),
|
||||
Some(Register::NoReg),
|
||||
Some(Register::Acc),
|
||||
None,
|
||||
)),
|
||||
// Halt the processor
|
||||
Instruction::Halt,
|
||||
];
|
||||
|
||||
for i in ins.iter() {
|
||||
println!("0x{:08x}", i.encode());
|
||||
for node in parser {
|
||||
println!("{:?}", node);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user