31 lines
1,009 B
Go
31 lines
1,009 B
Go
package optimizer
|
|
|
|
import (
|
|
"c65gm/internal/preproc"
|
|
)
|
|
|
|
type Config struct {
|
|
EnableLoad bool
|
|
EnableImm bool
|
|
EnableJmp bool
|
|
EnableSelf bool
|
|
Debug bool
|
|
ShowMarkers bool
|
|
}
|
|
|
|
func NewConfig(ps preproc.PragmaSet) *Config {
|
|
all := ps.GetPragma("_P_OPT_ALL") != "" && ps.GetPragma("_P_OPT_ALL") != "0"
|
|
|
|
return &Config{
|
|
EnableLoad: all || (ps.GetPragma("_P_OPT_LOAD") != "" && ps.GetPragma("_P_OPT_LOAD") != "0"),
|
|
EnableImm: all || (ps.GetPragma("_P_OPT_IMM") != "" && ps.GetPragma("_P_OPT_IMM") != "0"),
|
|
EnableJmp: all || (ps.GetPragma("_P_OPT_JMP") != "" && ps.GetPragma("_P_OPT_JMP") != "0"),
|
|
EnableSelf: all || (ps.GetPragma("_P_OPT_SELF") != "" && ps.GetPragma("_P_OPT_SELF") != "0"),
|
|
Debug: (ps.GetPragma("_P_OPT_DEBUG") != "" && ps.GetPragma("_P_OPT_DEBUG") != "0"),
|
|
ShowMarkers: (ps.GetPragma("_P_OPT_MARKERS") != "" && ps.GetPragma("_P_OPT_MARKERS") != "0"),
|
|
}
|
|
}
|
|
|
|
func (c *Config) Any() bool {
|
|
return c.EnableLoad || c.EnableImm || c.EnableJmp || c.EnableSelf
|
|
}
|