diff options
author | Kartik Agaram <vc@akkartik.com> | 2018-09-28 23:08:27 -0700 |
---|---|---|
committer | Kartik Agaram <vc@akkartik.com> | 2018-09-29 10:20:13 -0700 |
commit | 630433cd9cb97cf71d24bfc8fab6fb54ce40382a (patch) | |
tree | cf4cffae8599489e5efcbc18b965f804d5e3a8e8 /subx/013direct_addressing.cc | |
parent | fd0cf1cd07ce01c3d6fe709d55b60ff9d1d5d44f (diff) | |
download | mu-630433cd9cb97cf71d24bfc8fab6fb54ce40382a.tar.gz |
4614 - redo simulated RAM
Now simulated 'Memory' isn't just a single flat array. Instead it knows about segments and VMAs. The code segment will always be first, and the data/heap segment will always be second. The brk() syscall knows about the data segment. One nice side-effect is that I no longer need to mess with Memory initialization regardless of where I place my segments.
Diffstat (limited to 'subx/013direct_addressing.cc')
-rw-r--r-- | subx/013direct_addressing.cc | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/subx/013direct_addressing.cc b/subx/013direct_addressing.cc index 7b265a44..45e034ed 100644 --- a/subx/013direct_addressing.cc +++ b/subx/013direct_addressing.cc @@ -555,7 +555,8 @@ put(name, "5f", "pop top of stack to R7 (EDI)"); :(scenario pop_r32) % Reg[ESP].u = 0x60; -% write_mem_i32(0x60, 0x0000000a); +% Mem.push_back(vma(0x1)); // manually allocate memory +% write_mem_i32(0x60, 0x0000000a); // ..before this write == 0x1 # code segment # op ModR/M SIB displacement immediate 5b # pop stack to EBX |