cmd/irdump: basic disassembler

This commit is contained in:
mae
2026-02-08 00:30:43 -06:00
committed by Ophestra
parent 5db302110f
commit c7ba7f2a31
2 changed files with 166 additions and 12 deletions

View File

@@ -1,13 +1,12 @@
package main
import (
"bytes"
"errors"
"io"
"log"
"os"
"hakurei.app/command"
"hakurei.app/internal/pkg"
)
func main() {
@@ -17,10 +16,12 @@ func main() {
var (
flagOutput string
flagReal bool
flagHeader bool
flagForce bool
)
c := command.New(os.Stderr, log.Printf, "irdump", func(args []string) (err error) {
var input *os.File
if len(args) < 1 {
if len(args) != 1 {
return errors.New("irdump requires 1 argument")
}
if input, err = os.Open(args[0]); err != nil {
@@ -38,12 +39,8 @@ func main() {
}
}
inputData := bytes.NewBuffer(nil)
if _, err = io.Copy(inputData, input); err != nil {
return
}
var out string
if out, err = Disassemble(inputData.Bytes(), flagReal); err != nil {
if out, err = pkg.Disassemble(input, flagReal, flagHeader, flagForce); err != nil {
return
}
if _, err = output.WriteString(out); err != nil {
@@ -57,12 +54,18 @@ func main() {
).Flag(
&flagReal,
"r", command.BoolFlag(false),
"skip label generation; idents print real value")
"skip label generation; idents print real value",
).Flag(
&flagHeader,
"h", command.BoolFlag(false),
"display artifact headers",
).Flag(
&flagForce,
"f", command.BoolFlag(false),
"force display (skip validations)",
)
c.MustParse(os.Args[1:], func(err error) {
log.Fatal(err)
})
}
func Disassemble(ir []byte, real bool) (string, error) {
return "hello world", nil
}