Fully documented mem_cmp.rs

This commit is contained in:
François Autin 2023-03-14 14:49:58 +01:00
parent 03ac599c7f
commit d1935e9399
No known key found for this signature in database
GPG Key ID: 343F5D382E1DD77C

View File

@ -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]);
}