An Inst describes single x86 instruction encoding form.
type Inst struct { // Intel syntax (example: "SHR r/m32, imm8"). Intel string // Go assembler syntax (example: "SHRL imm8, r/m32"). Go string // GNU binutils syntax (example: "shrl imm8, r/m32"). GNU string // Binary encoding (example: "C1 /4 ib"). Encoding string // Validity in 32bit mode ("V", "I" or "N.E."). Mode32 string // Validity in 64bit mode ("V", "I", "N.E.", "N.P.", "N.I." or "N.S."). Mode64 string // CPUID feature flags required (comma-separated). CPUID string // Hints about instruction (comma-separated). // See "x86spec" package to see detailed overview of possible // tags and their meaning. Tags string // Read/write action of the instruction on its arguments, in Intel order. // For example, "rw,r" denotes that "SHR r/m32, imm8" reads and writes // its first argument but only reads its second argument. Action string // Whether Intel syntax has encoding forms distinguished only by // operand size, like most arithmetic instructions ("" or "Y"). Multisize string // DataSize is the size of the data operation in bits ("8" for MOVB, "16" for MOVW, and so on). DataSize string }
func (inst *Inst) GNUArgs() []string
GNUArgs returns the arguments in GNU binutils (mostly AT&T) syntax.
func (inst *Inst) GNUOpcode() string
GNUOpcode returns the opcode in GNU binutils (mostly AT&T) syntax.
func (inst *Inst) GoArgs() []string
GoArgs returns the arguments in Go (Plan9) syntax.
func (inst *Inst) GoOpcode() string
GoOpcode returns the opcode in Go (Plan9) syntax.
func (inst *Inst) HasTag(tag string) bool
HasTag reports whether inst tag list contains the specified tag.
func (inst *Inst) IntelArgs() []string
IntelArgs returns the arguments in the Intel syntax.
func (inst *Inst) IntelOpcode() string
IntelOpcode returns the opcode in the Intel syntax.
A Reader reads entries from an "x86.csv" file.
type Reader struct {
// contains filtered or unexported fields
}
func NewReader(r io.Reader) *Reader
NewReader returns a Reader reading from r, which should be of the content of the "x86.csv" (format version=0.2).
func (r *Reader) Read() (*Inst, error)
Read reads and returns the next Row from the "x86.csv" file. If there is no data left to be read, Read returns {nil, io.EOF}.
func (r *Reader) ReadAll() ([]*Inst, error)
ReadAll reads all remaining rows from r.
If error has occurred, still returns all rows that have been read during method execution.
A successful call returns err == nil, not err == io.EOF. Because ReadAll is defined to read until EOF, it does not treat end of file as an error to be reported.