Fully documented mem_cmp.rs
This commit is contained in:
parent
03ac599c7f
commit
d1935e9399
@ -1,49 +1,41 @@
|
||||
///! FILE.TXT FORMAT Representing machine memory memory
|
||||
/// - PC
|
||||
/// - SP
|
||||
/// - Section_1
|
||||
/// - Section_2
|
||||
/// - ...
|
||||
/// - Section_n
|
||||
///
|
||||
/// Each section is divided in 3 parts, on two lines of text
|
||||
/// addr SPACE len
|
||||
/// content
|
||||
|
||||
use std::{fs, io::{BufRead, BufReader, Lines, Error}};
|
||||
use crate::Machine;
|
||||
|
||||
const MEM_SIZE : usize = 4096;
|
||||
|
||||
/* FORMAT FICHIER.TXT Représentant la mémoire apres éxecution d'un prog
|
||||
* PC
|
||||
* SP
|
||||
* Section_1
|
||||
* Section_2
|
||||
* ...
|
||||
* ...
|
||||
* Section_n
|
||||
*/
|
||||
|
||||
/* Chaque section se divise en 3 parties, sur 2 lignes de texte
|
||||
* addr ESPACE len
|
||||
* content
|
||||
*/
|
||||
|
||||
//content est une suite hexadécimale
|
||||
|
||||
/// File section
|
||||
pub struct SectionFormat{
|
||||
/// Memory address of the section
|
||||
addr: String,
|
||||
/// The size of data in bytes
|
||||
len: String,
|
||||
/// The data itself in Hexadecimal format
|
||||
content: String,
|
||||
}
|
||||
|
||||
/// # Memory section
|
||||
///
|
||||
/// Representation of a section of memory from BurritOS or NachOS
|
||||
///
|
||||
/// - addr: Memory address of the section
|
||||
/// - len: The size of data in bytes
|
||||
/// - content: the data itself
|
||||
pub struct Section{
|
||||
addr: usize, // adresse dans la mémoire
|
||||
len: usize, // nombre d'octets de la donnée à addr
|
||||
content: Vec<u8>, // la donnée en question
|
||||
/// Memory address of the section
|
||||
addr: usize,
|
||||
/// The size of data in bytes
|
||||
len: usize,
|
||||
/// The data itself in Hexadecimal format
|
||||
content: Vec<u8>
|
||||
}
|
||||
|
||||
/*
|
||||
* Voir si instanciation d'une structure deplace les valeurs "locales" à la méthode from, je sais plus ....
|
||||
*/
|
||||
impl Section{
|
||||
impl Section {
|
||||
|
||||
/// Creates a memory section from a SectionFormat
|
||||
fn from(section: &SectionFormat) -> Section {
|
||||
@ -61,12 +53,17 @@ impl Section{
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Representation de l'etat de la mémoire (apres execution.... a confirmer), sous forme de sections
|
||||
*/
|
||||
pub struct MemChecker{
|
||||
|
||||
/// # Representation of the state of machine memory
|
||||
///
|
||||
/// Could represent memory at any point in time, before, during, or after execution.
|
||||
/// The memory is split into sections.
|
||||
pub struct MemChecker {
|
||||
/// Value of the program counter
|
||||
pc: usize,
|
||||
/// Value of the stack pointer
|
||||
sp: usize,
|
||||
/// Sections
|
||||
sections: Vec<Section>,
|
||||
}
|
||||
|
||||
@ -181,20 +178,13 @@ impl MemChecker{
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* FOR DEBUG
|
||||
*/
|
||||
/// For debug
|
||||
fn compare_print_m_c_machine(m_c: &MemChecker, machine: &mut Machine){
|
||||
|
||||
MemChecker::print_mem_checker(m_c);
|
||||
|
||||
for section in m_c.sections.iter() {
|
||||
|
||||
print!("\n\n");
|
||||
|
||||
println!("Content addr : {}", section.addr);
|
||||
println!("Content len (number of bytes) : {}", section.len);
|
||||
|
||||
for i in 0..section.len {
|
||||
println!("mem[{}] = {}", section.addr + i, machine.main_memory[section.addr + i]);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user