first pass at DATA sections

This commit is contained in:
Michael McLoughlin
2018-12-27 11:57:46 -08:00
parent d29c6340d7
commit 9243d299e6
11 changed files with 250 additions and 15 deletions

View File

@@ -15,6 +15,10 @@ type Symbol struct {
Static bool
}
func NewStaticSymbol(name string) Symbol {
return Symbol{Name: name, Static: true}
}
func (s Symbol) String() string {
n := s.Name
if s.Static {
@@ -51,12 +55,27 @@ func NewStackAddr(offset int) Mem {
}
}
func (m Mem) Idx(idx int) Mem {
func NewDataAddr(sym Symbol, offset int) Mem {
return Mem{
Symbol: sym,
Disp: offset,
Base: reg.StaticBase,
}
}
func (m Mem) Offset(idx int) Mem {
a := m
a.Disp += idx
return a
}
func (m Mem) Idx(r reg.Register, s uint8) Mem {
a := m
a.Index = r
a.Scale = s
return a
}
func (m Mem) Asm() string {
a := m.Symbol.String()
if m.Disp != 0 {