5
ast.go
5
ast.go
@@ -94,11 +94,14 @@ type Section interface {
|
||||
|
||||
// File represents an assembly file.
|
||||
type File struct {
|
||||
Includes []string
|
||||
Sections []Section
|
||||
}
|
||||
|
||||
func NewFile() *File {
|
||||
return &File{}
|
||||
return &File{
|
||||
Includes: []string{"textflag.h"},
|
||||
}
|
||||
}
|
||||
|
||||
func (f *File) AddSection(s Section) {
|
||||
|
||||
@@ -23,6 +23,7 @@ func NewGoAsm(cfg Config) Printer {
|
||||
|
||||
func (p *goasm) Print(f *avo.File) ([]byte, error) {
|
||||
p.header()
|
||||
p.includes(f.Includes)
|
||||
for _, s := range f.Sections {
|
||||
switch s := s.(type) {
|
||||
case *avo.Function:
|
||||
@@ -38,13 +39,17 @@ func (p *goasm) Print(f *avo.File) ([]byte, error) {
|
||||
|
||||
func (p *goasm) header() {
|
||||
p.Comment(p.cfg.GeneratedWarning())
|
||||
p.NL()
|
||||
p.include("textflag.h")
|
||||
}
|
||||
|
||||
func (p *goasm) include(path string) {
|
||||
func (p *goasm) includes(paths []string) {
|
||||
if len(paths) == 0 {
|
||||
return
|
||||
}
|
||||
p.NL()
|
||||
for _, path := range paths {
|
||||
p.Printf("#include \"%s\"\n", path)
|
||||
}
|
||||
}
|
||||
|
||||
func (p *goasm) function(f *avo.Function) {
|
||||
p.NL()
|
||||
|
||||
Reference in New Issue
Block a user