IPS(Interpreter for Process Structures) for mbed

Dependencies:   ConfigFile FATFileSystem mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers VirtualRAM.h Source File

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