IPS(Interpreter for Process Structures) for mbed
Dependencies: ConfigFile FATFileSystem mbed
VirtualRAM.h
00001 // VirtualRAM.h 2015/4/29 00002 #pragma once 00003 #define PAGE_CHUNK_SIZE 1024 00004 class VirtualRAM { 00005 public: 00006 int used_size; 00007 VirtualRAM(): used_size(0) { 00008 memset(mem_ptr, 0x00, sizeof(mem_ptr)); // NULL 00009 } 00010 uint8_t peek(uint16_t a) { 00011 uint8_t* mem = ptr(a); 00012 if (mem == NULL) { 00013 return 0x00; 00014 } 00015 return mem[a % PAGE_CHUNK_SIZE]; 00016 } 00017 void poke(uint16_t a, uint8_t b) { 00018 uint8_t* mem = ptr(a); 00019 if (mem == NULL) { 00020 mem = reinterpret_cast<uint8_t*>(malloc(PAGE_CHUNK_SIZE)); 00021 MBED_ASSERT(mem != NULL); 00022 mem_ptr[idx(a)] = mem; 00023 used_size += PAGE_CHUNK_SIZE; 00024 } 00025 mem[a % PAGE_CHUNK_SIZE] = b; 00026 } 00027 00028 private: 00029 uint8_t* ptr(uint16_t addr) { 00030 return mem_ptr[idx(addr)]; 00031 } 00032 int idx(uint16_t addr) { 00033 return addr / PAGE_CHUNK_SIZE; 00034 } 00035 uint8_t* mem_ptr[65536 / PAGE_CHUNK_SIZE]; 00036 }; 00037
Generated on Fri Jul 15 2022 06:25:55 by 1.7.2