Add Memory write primitive method

This commit is contained in:
rkx1209 2018-03-05 04:26:39 +09:00
parent 305b7f9349
commit 0ce05811e9
2 changed files with 32 additions and 0 deletions

View file

@ -18,6 +18,11 @@ static T ReadFromRAM(const uint64_t gpa) {
return value;
}
template<typename T>
static void WriteToRAM(const uint64_t gpa, T value) {
std::memcpy (&Memory::pRAM[gpa], &value, sizeof(T));
}
uint8_t ReadU8(const uint64_t gva) {
/* XXX: Implement Page translation */
uint64_t gpa = gva;
@ -39,4 +44,25 @@ uint64_t ReadU64(const uint64_t gva) {
return ReadFromRAM<uint64_t>(gpa);
}
void WriteU8(const uint64_t gva, uint8_t value) {
/* XXX: Implement Page translation */
uint64_t gpa = gva;
WriteToRAM<uint8_t>(gpa, value);
}
void WriteU16(const uint64_t gva, uint16_t value) {
/* XXX: Implement Page translation */
uint64_t gpa = gva;
WriteToRAM<uint16_t>(gpa, value);
}
void WriteU32(const uint64_t gva, uint32_t value) {
/* XXX: Implement Page translation */
uint64_t gpa = gva;
WriteToRAM<uint32_t>(gpa, value);
}
void WriteU64(const uint64_t gva, uint64_t value) {
/* XXX: Implement Page translation */
uint64_t gpa = gva;
WriteToRAM<uint64_t>(gpa, value);
}
}

View file

@ -10,5 +10,11 @@ uint8_t ReadU8(const uint64_t gva);
uint16_t ReadU16(const uint64_t gva);
uint32_t ReadU32(const uint64_t gva);
uint64_t ReadU64(const uint64_t gva);
void WriteU8(const uint64_t gva, uint8_t value);
void WriteU16(const uint64_t gva, uint16_t value);
void WriteU32(const uint64_t gva, uint32_t value);
void WriteU64(const uint64_t gva, uint64_t value);
}
#endif