about summary refs log tree commit diff stats
path: root/subx/034compute_segment_address.cc
Commit message (Collapse)AuthorAgeFilesLines
* 4771Kartik Agaram2018-11-241-0/+2
| | | | | | | I stopped handling disp16 at some point, and using instructions with such an operand messes up segment alignment when generating ELF binaries. I don't test my ELF generation. This is a sign that maybe I should start.
* 4761Kartik Agaram2018-11-231-1/+1
| | | | | Bugfix: I forgot about ELF segment offsets when implementing VMAs. Eventually segments grew large enough that I started seeing overlaps.
* 4754 - allow data segment to refer to variablesKartik Agaram2018-11-191-8/+10
|
* 4668Kartik Agaram2018-10-051-3/+3
|
* 4661Kartik Agaram2018-10-041-17/+17
| | | | | Make segment management a little more consistent between initial segments and add-on segments (using `mmap`).
* 4637 - subx: support multiple input filesKartik Agaram2018-10-011-3/+62
|
* 4631Kartik Agaram2018-10-011-0/+10
|
* 4614 - redo simulated RAMKartik Agaram2018-09-291-2/+0
| | | | | | | | | | | 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.
* 4565Kartik Agaram2018-09-211-0/+15
|
* 4550Kartik Agaram2018-09-201-1/+2
|
* 4544Kartik Agaram2018-09-121-1/+1
| | | | | | | | Attempt #3 at fixing CI. In the process the feature gets a lot less half-baked. Ridiculously misleading that we had `has_metadata()` was special-cased to one specific transform. I suck.
* 4535 - support for global variable namesKartik Agaram2018-09-011-2/+26
|
* 4534Kartik Agaram2018-09-011-0/+31
I'd been planning to add segment address computation after all labels were computed, including labels in the data segment (which isn't built yet). But now I realize that won't work, because labels in the data segment will require segment start addresses. We need to deal in absolute addresses rather than relative offsets as with the jump instructions that use code labels. Layer 34 is now broken by this change in a way that isn't obvious right now: it is oblivious to imm32 and disp32 operand tags that are now going to be present in the programs it sees. It's a lucky accident that everything still works, because we're only using segment names right now for the very first (code) segment in a program.