more or less almost done with the instr reels.

This commit is contained in:
2026-03-25 06:59:00 -06:00
parent 4a659b5f0d
commit 1c971a4e22
11 changed files with 338 additions and 277 deletions

View File

@@ -16,9 +16,8 @@ namespace spider {
private:
u64 _use_count;
isize _block_index;
std::deque<ReelBlock> _blocks;
deque<ReelBlock> _blocks;
u64 _size;
public:
@@ -40,11 +39,11 @@ namespace spider {
private:
isize selectIndex(u64 ip);
std::pair<u64, u8> indexOf(u64 ip);
void growToFit(isize index);
bool continous(u64 ip0, u64 ip1, u64* b_index, u16* s_index);
ReelBlock* selectBlock(isize index);
void growTo(u64 ip);
public:
@@ -54,7 +53,7 @@ namespace spider {
* Reindexing may occur, continous access
* may incurr in less penalties.
*/
virtual u8 atU8(u64 ip) override;
virtual u8 readU8(u64 ip) override;
/**
* Obtains a byte of data at
@@ -62,7 +61,7 @@ namespace spider {
* Reindexing may occur, continous access
* may incurr in less penalties.
*/
virtual u16 atU16(u64 ip) override;
virtual u16 readU16(u64 ip) override;
/**
* Obtains a byte of data at
@@ -70,7 +69,7 @@ namespace spider {
* Reindexing may occur, continous access
* may incurr in less penalties.
*/
virtual u32 atU32(u64 ip) override;
virtual u32 readU32(u64 ip) override;
/**
* Obtains a byte of data at
@@ -78,33 +77,34 @@ namespace spider {
* Reindexing may occur, continous access
* may incurr in less penalties.
*/
virtual u64 atU64(u64 ip) override;
virtual u64 readU64(u64 ip) override;
/**
* Reads a range of data, and
* outputs it.
*/
virtual void readRange(u64 ip, u8* out, u64 length) override;
/**
* Current size of the instructions.
*/
virtual u64 size() override;
public:
void at(u64 ip, u8 dat);
void writeU8(u64 ip, u8 dat);
void at(u64 ip, u16 dat);
void writeU16(u64 ip, u16 dat);
void at(u64 ip, u32 dat);
void writeU32(u64 ip, u32 dat);
void at(u64 ip, u64 dat);
/**
* Appends instruction at location.
*/
void append(u64 ip, u16 bc);
void writeU64(u64 ip, u64 dat);
/**
* Appends instruction at the end.
*/
void append(u16 bc);
/**
* Removes instruction at location.
*/
void remove(u64 ip);
};
}