aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/ifuzz/x86/encode.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/ifuzz/x86/encode.go')
-rw-r--r--pkg/ifuzz/x86/encode.go19
1 files changed, 10 insertions, 9 deletions
diff --git a/pkg/ifuzz/x86/encode.go b/pkg/ifuzz/x86/encode.go
index b73a22c14..9258bc41c 100644
--- a/pkg/ifuzz/x86/encode.go
+++ b/pkg/ifuzz/x86/encode.go
@@ -8,12 +8,13 @@
package x86
import (
- "github.com/google/syzkaller/pkg/ifuzz"
"math/rand"
+
+ "github.com/google/syzkaller/pkg/ifuzz/ifuzzimpl"
)
// nolint: gocyclo, nestif, gocognit, funlen
-func (insn *Insn) Encode(cfg *ifuzz.Config, r *rand.Rand) []byte {
+func (insn *Insn) Encode(cfg *ifuzzimpl.Config, r *rand.Rand) []byte {
if !insn.IsCompatible(cfg) {
panic("instruction is not suitable for this mode")
}
@@ -23,11 +24,11 @@ func (insn *Insn) Encode(cfg *ifuzz.Config, r *rand.Rand) []byte {
var operSize, immSize, dispSize, addrSize int
switch cfg.Mode {
- case ifuzz.ModeLong64:
+ case ifuzzimpl.ModeLong64:
operSize, immSize, dispSize, addrSize = 4, 4, 4, 8
- case ifuzz.ModeProt32:
+ case ifuzzimpl.ModeProt32:
operSize, immSize, dispSize, addrSize = 4, 4, 4, 4
- case ifuzz.ModeProt16, ifuzz.ModeReal16:
+ case ifuzzimpl.ModeProt16, ifuzzimpl.ModeReal16:
operSize, immSize, dispSize, addrSize = 2, 2, 2, 2
default:
panic("bad mode")
@@ -53,7 +54,7 @@ func (insn *Insn) Encode(cfg *ifuzz.Config, r *rand.Rand) []byte {
if !insn.No66Prefix {
prefixes = append(prefixes, 0x66) // operand size
}
- if cfg.Mode == ifuzz.ModeLong64 || !insn.Mem32 {
+ if cfg.Mode == ifuzzimpl.ModeLong64 || !insn.Mem32 {
prefixes = append(prefixes, 0x67) // address size
}
if !insn.NoRepPrefix {
@@ -70,7 +71,7 @@ func (insn *Insn) Encode(cfg *ifuzz.Config, r *rand.Rand) []byte {
// REX
var rex byte
- if cfg.Mode == ifuzz.ModeLong64 && r.Intn(2) == 0 {
+ if cfg.Mode == ifuzzimpl.ModeLong64 && r.Intn(2) == 0 {
// bit 0 - B
// bit 1 - X
// bit 2 - R
@@ -118,7 +119,7 @@ func (insn *Insn) Encode(cfg *ifuzz.Config, r *rand.Rand) []byte {
code = append(code, insn.Vex)
vexR = byte(1)
vexX = byte(1)
- if cfg.Mode == ifuzz.ModeLong64 {
+ if cfg.Mode == ifuzzimpl.ModeLong64 {
vexR = byte(r.Intn(2))
vexX = byte(r.Intn(2))
}
@@ -146,7 +147,7 @@ func (insn *Insn) Encode(cfg *ifuzz.Config, r *rand.Rand) []byte {
code = append(code, vexR<<7|vexX<<6|vexB<<5|insn.VexMap)
code = append(code, W<<7|vvvv<<3|L<<2|pp)
// TODO: short encoding
- if cfg.Mode != ifuzz.ModeLong64 {
+ if cfg.Mode != ifuzzimpl.ModeLong64 {
vvvv |= 8
}
}