add -bootstrap option to avogen
This commit is contained in:
@@ -8,6 +8,7 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
"github.com/mmcloughlin/avo/internal/gen"
|
"github.com/mmcloughlin/avo/internal/gen"
|
||||||
|
"github.com/mmcloughlin/avo/internal/inst"
|
||||||
"github.com/mmcloughlin/avo/internal/load"
|
"github.com/mmcloughlin/avo/internal/load"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -17,15 +18,20 @@ var generators = map[string]gen.Builder{
|
|||||||
"godatatest": gen.NewGoDataTest,
|
"godatatest": gen.NewGoDataTest,
|
||||||
}
|
}
|
||||||
|
|
||||||
var datadir = flag.String(
|
// Command-line flags.
|
||||||
|
var (
|
||||||
|
bootstrap = flag.Bool("bootstrap", false, "regenerate instruction list from original data")
|
||||||
|
datadir = flag.String(
|
||||||
"data",
|
"data",
|
||||||
filepath.Join(build.Default.GOPATH, "src/github.com/mmcloughlin/avo/internal/data"),
|
filepath.Join(build.Default.GOPATH, "src/github.com/mmcloughlin/avo/internal/data"),
|
||||||
"path to data directory",
|
"path to data directory",
|
||||||
)
|
)
|
||||||
|
output = flag.String("output", "", "path to output file (default stdout)")
|
||||||
var output = flag.String("output", "", "path to output file (default stdout)")
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
log.SetPrefix("avogen: ")
|
||||||
|
log.SetFlags(0)
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
// Build generator.
|
// Build generator.
|
||||||
@@ -51,11 +57,16 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Load instructions.
|
// Load instructions.
|
||||||
|
is := inst.Instructions
|
||||||
|
if *bootstrap {
|
||||||
|
log.Printf("bootstrap: loading instructions from data directory %s", *datadir)
|
||||||
l := load.NewLoaderFromDataDir(*datadir)
|
l := load.NewLoaderFromDataDir(*datadir)
|
||||||
is, err := l.Load()
|
r, err := l.Load()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
is = r
|
||||||
|
}
|
||||||
|
|
||||||
// Generate output.
|
// Generate output.
|
||||||
b, err := g.Generate(is)
|
b, err := g.Generate(is)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package inst
|
package inst
|
||||||
|
|
||||||
//go:generate avogen -data ../data -output ztable.go godata
|
//go:generate avogen -bootstrap -data ../data -output ztable.go godata
|
||||||
//go:generate avogen -data ../data -output ztable_test.go godatatest
|
//go:generate avogen -bootstrap -data ../data -output ztable_test.go godatatest
|
||||||
|
|
||||||
func Lookup(opcode string) (Instruction, bool) {
|
func Lookup(opcode string) (Instruction, bool) {
|
||||||
for _, i := range Instructions {
|
for _, i := range Instructions {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Code generated by command: avogen -data ../data -output ztable.go godata. DO NOT EDIT.
|
// Code generated by command: avogen -bootstrap -data ../data -output ztable.go godata. DO NOT EDIT.
|
||||||
|
|
||||||
package inst
|
package inst
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// Code generated by command: avogen -data ../data -output ztable_test.go godatatest. DO NOT EDIT.
|
// Code generated by command: avogen -bootstrap -data ../data -output ztable_test.go godatatest. DO NOT EDIT.
|
||||||
|
|
||||||
package inst_test
|
package inst_test
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user