|
|
1.1 root 1: //
2: // nono
3: // Copyright (C) 2022 nono project
4: // Licensed under nono-license.txt
5: //
6:
7: // テスト用の DebuggerMemoryStream の簡易でっち上げ版。
8: // 実物をリンクすると芋づる式に必要なものが増えるので。
9: // アドレスは paddr のみ使うことにする。
10: //
11: // testdis.cpp 等から ram[] の宣言以降に直接 include して使う。
12:
13: static inline uint64
14: vm_phys_peek_8(uint32 addr)
15: {
16: assertmsg(addr < sizeof(ram), "addr=0x%x", addr);
17:
18: // XXX endian
19: return ram[addr ^ 1];
20: }
21:
22: // コンストラクタ
23: DebuggerMemoryStream::DebuggerMemoryStream(const DebuggerMD *md_,
1.1.1.2 ! root 24: busaddr laddr_)
1.1 root 25: {
26: md = md_;
27: laddr = laddr_;
1.1.1.2 ! root 28: paddr = laddr.Addr();
1.1 root 29: }
30:
31: uint64
32: DebuggerMemoryStream::Peek(int bytes)
33: {
34: uint64 data;
35:
36: data = 0;
37: for (int i = 0; i < bytes; i++) {
38: data <<= 8;
39: data |= vm_phys_peek_8(paddr + i);
40: }
41: return data;
42: }
43:
44: uint64
45: DebuggerMemoryStream::Read(int bytes)
46: {
47: uint64 data;
48:
49: data = Peek(bytes);
50: laddr += bytes;
51: paddr += bytes;
52: return data;
53: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.