blob: 429ac2b5fab29467b8b800da0e34f38863d36e00 (
plain)
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
|
#include "storage.h"
#include "definitions.h"
#include <algorithm>
std::vector<std::array<signed int, LINE_SIZE>>
Storage::view(int base, int lines)
{
base = (base / LINE_SIZE) * LINE_SIZE;
std::vector<std::array<signed int, LINE_SIZE>> ret(lines + 1);
std::copy(
this->data->begin() + base, this->data->begin() + base + lines,
ret.begin());
return ret;
}
void Storage::do_write(signed data, int address)
{
int line = address / LINE_SIZE;
int word = address % LINE_SIZE;
this->data->at(line).at(word) = data;
}
void Storage::resolve()
{
if (this->wait_time == 0) {
this->deque.pop_front();
this->wait_time = delay;
} else {
--this->wait_time;
}
}
|