Add rfp
register, remove debug message about intruction pointer == None
This commit is contained in:
parent
f7b2320138
commit
eba264db70
|
@ -52,6 +52,7 @@ pub struct Cpu {
|
||||||
pub instruction_pointer: u32,
|
pub instruction_pointer: u32,
|
||||||
pub stack_pointer: u32,
|
pub stack_pointer: u32,
|
||||||
pub exception_stack_pointer: u32,
|
pub exception_stack_pointer: u32,
|
||||||
|
pub frame_pointer: u32,
|
||||||
|
|
||||||
pub register: [u32; 32],
|
pub register: [u32; 32],
|
||||||
pub flag: Flag,
|
pub flag: Flag,
|
||||||
|
@ -66,6 +67,7 @@ impl Cpu {
|
||||||
instruction_pointer: 0xF0000000,
|
instruction_pointer: 0xF0000000,
|
||||||
stack_pointer: 0x00000000,
|
stack_pointer: 0x00000000,
|
||||||
exception_stack_pointer: 0x00000000,
|
exception_stack_pointer: 0x00000000,
|
||||||
|
frame_pointer: 0x00000000,
|
||||||
register: [0; 32],
|
register: [0; 32],
|
||||||
flag: Flag { swap_sp: false, interrupt: false, carry: false, zero: false },
|
flag: Flag { swap_sp: false, interrupt: false, carry: false, zero: false },
|
||||||
halted: false,
|
halted: false,
|
||||||
|
@ -139,6 +141,7 @@ impl Cpu {
|
||||||
0..=31 => self.register[register as usize],
|
0..=31 => self.register[register as usize],
|
||||||
32 => self.stack_pointer,
|
32 => self.stack_pointer,
|
||||||
33 => self.exception_stack_pointer,
|
33 => self.exception_stack_pointer,
|
||||||
|
34 => self.frame_pointer,
|
||||||
_ => panic!("Invalid register: {}", register),
|
_ => panic!("Invalid register: {}", register),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -147,6 +150,7 @@ impl Cpu {
|
||||||
0..=31 => self.register[register as usize] = word,
|
0..=31 => self.register[register as usize] = word,
|
||||||
32 => self.stack_pointer = word,
|
32 => self.stack_pointer = word,
|
||||||
33 => self.exception_stack_pointer = word,
|
33 => self.exception_stack_pointer = word,
|
||||||
|
34 => self.frame_pointer = word,
|
||||||
_ => panic!("Invalid register: {}", register),
|
_ => panic!("Invalid register: {}", register),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -168,6 +172,7 @@ impl Cpu {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
println!("rsp: {:#010X} | resp: {:#010X}", self.stack_pointer, self.exception_stack_pointer);
|
println!("rsp: {:#010X} | resp: {:#010X}", self.stack_pointer, self.exception_stack_pointer);
|
||||||
|
println!("rfp: {:#010X}", self.frame_pointer);
|
||||||
}
|
}
|
||||||
pub fn push_stack_8(&mut self, byte: u8) {
|
pub fn push_stack_8(&mut self, byte: u8) {
|
||||||
let decremented_stack_pointer = self.stack_pointer.overflowing_sub(1);
|
let decremented_stack_pointer = self.stack_pointer.overflowing_sub(1);
|
||||||
|
@ -324,8 +329,6 @@ impl Cpu {
|
||||||
let next_instruction_pointer = self.execute_instruction(instruction);
|
let next_instruction_pointer = self.execute_instruction(instruction);
|
||||||
if let Some(next) = next_instruction_pointer {
|
if let Some(next) = next_instruction_pointer {
|
||||||
self.instruction_pointer = next;
|
self.instruction_pointer = next;
|
||||||
} else {
|
|
||||||
println!("next instruction pointer is None!")
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let size = ((opcode & 0b1100000000000000) >> 14) as u8;
|
let size = ((opcode & 0b1100000000000000) >> 14) as u8;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user