Fully documented mem_cmp.rs
This commit is contained in:
parent
03ac599c7f
commit
d1935e9399
@ -1,48 +1,40 @@
|
|||||||
|
///! 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 std::{fs, io::{BufRead, BufReader, Lines, Error}};
|
||||||
use crate::Machine;
|
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
|
/// File section
|
||||||
pub struct SectionFormat{
|
pub struct SectionFormat{
|
||||||
|
/// Memory address of the section
|
||||||
addr: String,
|
addr: String,
|
||||||
|
/// The size of data in bytes
|
||||||
len: String,
|
len: String,
|
||||||
|
/// The data itself in Hexadecimal format
|
||||||
content: String,
|
content: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// # Memory section
|
/// # Memory section
|
||||||
///
|
///
|
||||||
/// Representation of a section of memory from BurritOS or NachOS
|
/// 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{
|
pub struct Section{
|
||||||
addr: usize, // adresse dans la mémoire
|
/// Memory address of the section
|
||||||
len: usize, // nombre d'octets de la donnée à addr
|
addr: usize,
|
||||||
content: Vec<u8>, // la donnée en question
|
/// 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
|
/// Creates a memory section from a SectionFormat
|
||||||
@ -61,12 +53,17 @@ impl Section{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Representation de l'etat de la mémoire (apres execution.... a confirmer), sous forme de sections
|
/// # 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 {
|
pub struct MemChecker {
|
||||||
|
/// Value of the program counter
|
||||||
pc: usize,
|
pc: usize,
|
||||||
|
/// Value of the stack pointer
|
||||||
sp: usize,
|
sp: usize,
|
||||||
|
/// Sections
|
||||||
sections: Vec<Section>,
|
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){
|
fn compare_print_m_c_machine(m_c: &MemChecker, machine: &mut Machine){
|
||||||
|
|
||||||
MemChecker::print_mem_checker(m_c);
|
MemChecker::print_mem_checker(m_c);
|
||||||
|
|
||||||
for section in m_c.sections.iter() {
|
for section in m_c.sections.iter() {
|
||||||
|
|
||||||
print!("\n\n");
|
print!("\n\n");
|
||||||
|
|
||||||
println!("Content addr : {}", section.addr);
|
println!("Content addr : {}", section.addr);
|
||||||
println!("Content len (number of bytes) : {}", section.len);
|
println!("Content len (number of bytes) : {}", section.len);
|
||||||
|
|
||||||
for i in 0..section.len {
|
for i in 0..section.len {
|
||||||
println!("mem[{}] = {}", section.addr + i, machine.main_memory[section.addr + i]);
|
println!("mem[{}] = {}", section.addr + i, machine.main_memory[section.addr + i]);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user