1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <string>
using namespace std;
 
class BaseMemory {
    char *mem;
    int size;
    int index;
protected:
    BaseMemory(int size) { this->size = size; mem = new char[size]; index = 0; }
public:
    char read(int i) { return mem[i]; }
    void burn(char *mem, int size);
    void write(int i, char c) { mem[i] = c; }
};
 
void BaseMemory::burn(char *mem, int size) {
    if (this->size < index) return;
    for (int i = index; i < index + size; i++this->mem[i] = mem[i - index];
    index += size;
}
 
class ROM :public BaseMemory {
public:
    ROM(int cap, char *mem, int size) :BaseMemory(cap) { burn(mem, size); }
};
 
class RAM :public BaseMemory {
public:
    RAM(int cap) :BaseMemory(cap) {};
};
 
int main() {
    char x[5= { 'h''e''l''l''o' };
    ROM biosROM(1024 * 10, x, 5);
    RAM mainMemory(1024 * 1024);
 
    for (int i = 0; i < 5; i++) mainMemory.write(i, biosROM.read(i));
    for (int i = 0; i < 5; i++cout << mainMemory.read(i);
}
cs


+ Recent posts