change memory to a vector, it can now be fill
This commit is contained in:
@ -5,7 +5,7 @@ use super::global::*;
|
||||
use std::fs::File;
|
||||
|
||||
/// doit disparaitre
|
||||
const MEM_SIZE : usize = 4096;
|
||||
const MEM_SIZE : usize = 0x500000;
|
||||
|
||||
pub trait RegisterNum: Add<Output=Self> + Sub<Output=Self> + PartialEq + Copy {}
|
||||
|
||||
@ -65,7 +65,7 @@ pub struct Machine {
|
||||
pub sp: usize,
|
||||
pub int_reg : Register<i64>,
|
||||
pub fp_reg : Register<f32>,
|
||||
pub main_memory : [u8 ; MEM_SIZE],
|
||||
pub main_memory : Vec<u8>,
|
||||
pub shiftmask : [u64 ; 64]
|
||||
// futur taille à calculer int memSize = g_cfg->NumPhysPages * g_cfg->PageSize;
|
||||
//creer une struct cfg(configuration) qui s'initialise avec valeur dans un fichier cfg
|
||||
@ -89,7 +89,7 @@ impl Machine {
|
||||
sp: 0,
|
||||
int_reg : Register::<i64>::init(),
|
||||
fp_reg : Register::<f32>::init(),
|
||||
main_memory : [0 ; MEM_SIZE],
|
||||
main_memory : vec![0; MEM_SIZE],
|
||||
shiftmask
|
||||
}
|
||||
|
||||
@ -180,17 +180,16 @@ impl Machine {
|
||||
uint64_t value;*/
|
||||
|
||||
if machine.main_memory.len() <= machine.pc as usize {
|
||||
println!("ERROR : number max of instructions rushed");
|
||||
return ;
|
||||
panic!("ERROR : number max of instructions rushed");
|
||||
}
|
||||
let mut val: [u8; 4] = [0; 4];
|
||||
for i in 0..4 {
|
||||
let mut val: [u8; 8] = [0; 8];
|
||||
for i in 0..8 {
|
||||
val[i] = machine.main_memory[machine.pc as usize + i];
|
||||
}
|
||||
|
||||
let val = u32::from_be_bytes(val);
|
||||
let val = u64::from_be_bytes(val);
|
||||
println!("{:x}", val);
|
||||
let inst : Instruction = decode(val as u64);
|
||||
let inst : Instruction = decode(val);
|
||||
|
||||
|
||||
match inst.opcode {
|
||||
@ -610,8 +609,11 @@ impl Machine {
|
||||
|
||||
}
|
||||
|
||||
pub fn print_memory(machine : &mut Machine) {
|
||||
for i in 0..MEM_SIZE {
|
||||
/// print memory FOR DEBUG
|
||||
///
|
||||
/// "@"adresse [16 bytes]
|
||||
pub fn print_memory(machine : &mut Machine, from: usize, to: usize) {
|
||||
for i in from..to {
|
||||
if i%16 == 0 {
|
||||
print!("\n@{:04x} ", i);
|
||||
}
|
||||
|
Reference in New Issue
Block a user