From 85d737a29aed74627e1667728fbbdeb51f87e8f1 Mon Sep 17 00:00:00 2001 From: John Connors Date: Fri, 7 Mar 2008 23:48:11 +0000 Subject: [PATCH] Tidying up tests. Adding fixes for use from another package. --- package.lisp | 3 +- symbols.lisp | 152 +-- x86asm-test.lisp | 2 + x86assembler.lisp | 274 +++--- x86instructions.lisp | 2675 +++++++++++++++++++++++++------------------------- 5 files changed, 1540 insertions(+), 1566 deletions(-) rewrite x86instructions.lisp (77%) diff --git a/package.lisp b/package.lisp index 17dad06..d23c352 100644 --- a/package.lisp +++ b/package.lisp @@ -6,7 +6,8 @@ (:nicknames :x86-asm) (:export :make-instruction-hashtable - :assemble-program + :assemble-form + :assemble-forms :make-segment :assemble-forms :print-segment)) diff --git a/symbols.lisp b/symbols.lisp index 058ae33..91f4a58 100644 --- a/symbols.lisp +++ b/symbols.lisp @@ -14,10 +14,10 @@ (defclass segment - () - ((alignment - :initform 2 - :initarg :alignment + () + ((alignment + :initform 2 + :initarg :alignment :reader alignment-of) (symbol-table :initform nil @@ -26,10 +26,10 @@ (defclass data-segment (segment) - ((contents - :initform (make-array '(4096) - :element-type '(unsigned-byte 8) - :fill-pointer 0) + ((contents + :initform (make-array '(4096) + :element-type '(unsigned-byte 8) + :fill-pointer 0) :accessor contents-of)) (:documentation "An ELF segment containing actual data")) @@ -49,8 +49,8 @@ "(set-current-segment segment-name) sets the assembler to emit code or data into the given segement" (setf *current-segment-name* segment-name) - (setf *current-segment-package* - (find-package (x86-symbol-package-name segment-name)))) + (setf *current-segment-package* + (find-package (x86-symbol-package-name segment-name)))) (defun fresh-package (designator) "Return a package if it exists, otherwise create it." @@ -63,11 +63,11 @@ or data into the given segement" ;; segment-type must be 'data-segment or 'bss-segment (defun make-segment (segment-name &key set-to-current segment-type) "(make-segment segment-name :set-to-current t/nil segment-type) Creates -a segment for our code to be assembled into. It may be a data-segment or bss-segment +a segment for our code to be assembled into. It may be a data-segment or bss-segment currently" (assert (member segment-type '(:data-segment :bss-segment))) (let ((segment-package (fresh-package (x86-symbol-package-name segment-name))) - (segment-object (make-instance (find-symbol (string segment-type))))) + (segment-object (make-instance (find-symbol (string segment-type) :cl-x86-asm)))) ;; add segment-package to master list (push segment-package *x86-symbol-packages*) ;; add the package to the object slot @@ -87,42 +87,42 @@ which we assemble actual emitted data to" "(get-segment-position) returns the position the next byte will be emitted to in the current segment" (length (contents-of (get-segment-object)))) - + ;; symbols (defun make-assembler-symbol (symbol-name) "(make-assember-symbol symbol-name) creates a symbol with the given name in the current segments package, and gives it a default value and type" - (multiple-value-bind - (package-symbol exists) + (multiple-value-bind + (package-symbol exists) (intern symbol-name *current-segment-package*) - (unless exists + (unless exists (setf (symbol-value package-symbol) 0) (setf (get package-symbol 'reference-type) :dword)) - package-symbol)) - + package-symbol)) + ;; add a symbol reference to a segment (defun add-symbol-reference (symbol-name) "(add-symbol-reference symbol-name) Called when the assembler finds a symbol refrence in the current program. Adds the location of the reference to the symbol plist." (format *debug-io* "Referring to symbol ~A~&" symbol-name) - (let* ((package-symbol - (make-assembler-symbol symbol-name)) - (symbol-references - (get package-symbol 'reference-list nil))) - (setf (get package-symbol 'reference-list) - (append symbol-references (get-segment-position))))) - -;; set the value of a symbol + (let* ((package-symbol + (make-assembler-symbol symbol-name)) + (symbol-references + (get package-symbol 'reference-list nil))) + (setf (get package-symbol 'reference-list) + (append symbol-references (get-segment-position))))) + +;; set the value of a symbol (defun add-symbol-definition (symbol-name &key (symbol-type :dword)) "(add-symbol-reference symbol-name) Called when the assembler finds a symbol definition in the current segment. Sets the symbol value to the defined value and the type to the symbol plist" (format *debug-io* "Defining symbol ~A~&" symbol-name) - (let* ((package-symbol - (make-assembler-symbol symbol-name))) + (let* ((package-symbol + (make-assembler-symbol symbol-name))) (setf (symbol-value package-symbol) (get-segment-position)) (setf (get package-symbol 'reference-type) symbol-type))) @@ -133,27 +133,27 @@ Fixes up an individual reference in the segment-contents vector" (flet ;; accessors to break up type specifier (car = kind, cadr = size) ((reference-size (ref) - (second ref)) -;; (reference-kind (ref) -;; (first ref)) + (second ref)) + ;; (reference-kind (ref) + ;; (first ref)) ) ;; transform symbol to sequence - (let ((sym-value-seq - (decompose-to-n-bytes sym-value (reference-size sym-type)))) + (let ((sym-value-seq + (decompose-to-n-bytes sym-value (reference-size sym-type)))) ;; poke sequence into contents (loop - for i from 0 below (length sym-value-seq) - do (setf (aref (contents-of (get-segment-object)) (+ sym-ref i)) - (elt sym-value-seq i)))))) - + for i from 0 below (length sym-value-seq) + do (setf (aref (contents-of (get-segment-object)) (+ sym-ref i)) + (elt sym-value-seq i)))))) + (defun fixup-symbol-references (sym-name) "(fixup-symbol-references (sym-name) Fixes up all references to a symbol in the current segment" (let ((sym-value (symbol-value sym-name)) - (sym-type (get sym-name 'reference-type)) - (sym-references (get sym-name 'reference-list))) - (mapcar + (sym-type (get sym-name 'reference-type)) + (sym-references (get sym-name 'reference-list))) + (mapcar #'(lambda (r) (fixup-symbol-reference sym-value sym-type r)) sym-references))) @@ -162,60 +162,60 @@ Fixes up all references to a symbol in the current segment" "(fixup-segment-symbols () Fixup all symbols in the current segment" (labels ((list-segment-symbols () - (loop - for sym being each present-symbol in *current-segment-package* - collect (symbol-name sym)))) + (loop + for sym being each present-symbol in *current-segment-package* + collect (symbol-name sym)))) (let ((seg-sym-names (list-segment-symbols))) (mapcar #'fixup-symbol-references seg-sym-names)))) -;; convience function to emit stream of bytes to segment +;; convience function to emit stream of bytes to segment ;; (could be done with below function, but..) (defun emit-bytes-to-segment (data) "(emit-bytes-to-segment data) assemble the sequence data into the current segment as a stream of bytes" - (map nil - #'(lambda (x) (vector-push-extend x (contents-of (get-segment-object)))) + (map nil + #'(lambda (x) (vector-push-extend x (contents-of (get-segment-object)))) data)) ;; emit data to our current segment (defun emit-data-to-segment (data &key (data-size 4)) "(emit-data-to-segment data :data-size n) Emits data to segment as a sequence of bytes, assuming it to be of the size given, if padding or alingmnet is needed" - (format *debug-io* "Emitting ~A to current segment~&" data) - (labels + (format *debug-io* "Emitting ~A to current segment~&" data) + (labels ((add-to-segment-data (b) - (let ((segment-contents - (contents-of (get-segment-object)))) - (ctypecase b - (integer - (mapcar #'(lambda (x) (vector-push-extend x segment-contents)) - (decompose-to-n-bytes b data-size))) - (character - (vector-push-extend (char-code b) segment-contents)) - (string - (map nil #'add-to-segment-data b) - (add-to-segment-data 0)))))) - ;; symbol? + (let ((segment-contents + (contents-of (get-segment-object)))) + (ctypecase b + (integer + (mapcar #'(lambda (x) (vector-push-extend x segment-contents)) + (decompose-to-n-bytes b data-size))) + (character + (vector-push-extend (char-code b) segment-contents)) + (string + (map nil #'add-to-segment-data b) + (add-to-segment-data 0)))))) + ;; symbol? (map nil #'add-to-segment-data data))) (defun print-segment () "(print-segment) Diagnostic function that lets us look at the contents of a segment" - (let ((segment-object - (get-segment-object))) + (let ((segment-object + (get-segment-object))) (format t "Segment type ~A~&" (type-of segment-object)) (ctypecase segment-object - (data-segment + (data-segment (progn - (format t "Segment size ~8,'0X bytes~&" (length (contents-of segment-object))) - (loop - for i = 0 then (1+ i) - for bytes across (contents-of segment-object) - do - (if (zerop (mod i 8)) - (format t "~&~2,'0X" (aref (contents-of segment-object) i)) - (format t " ~2,'0X" (aref (contents-of segment-object) i)))))) - (bss-segment + (format t "Segment size ~8,'0X bytes~&" (length (contents-of segment-object))) + (loop + for i = 0 then (1+ i) + for bytes across (contents-of segment-object) + do + (if (zerop (mod i 8)) + (format t "~&~2,'0X" (aref (contents-of segment-object) i)) + (format t " ~2,'0X" (aref (contents-of segment-object) i)))))) + (bss-segment (format t "Bss segment containing ~8,'0X bytes~&" (bss-size-of segment-object)))))) @@ -225,11 +225,11 @@ of bytes, assuming it to be of the size given, if padding or alingmnet is needed (loop for package in *x86-symbol-packages* do - (delete-package package)) + (delete-package package)) (setf *current-segment-package* nil) (setf *current-segment-name* nil) (setf *x86-symbol-packages* nil)) - - - + + + diff --git a/x86asm-test.lisp b/x86asm-test.lisp index 0d179fd..c65ab69 100644 --- a/x86asm-test.lisp +++ b/x86asm-test.lisp @@ -5,6 +5,8 @@ (in-package :cl-x86-asm-test) +;; initialise our table of instructions +(make-instruction-hash-table) ;; create a code segment (make-segment "text" :segment-type :data-segment :set-to-current t) diff --git a/x86assembler.lisp b/x86assembler.lisp index a76e5a7..1184d13 100644 --- a/x86assembler.lisp +++ b/x86assembler.lisp @@ -10,11 +10,7 @@ "(switch-bits) switch assembly mode between 32 bits and 16" (if (= *current-bits-size* 32) (setf *current-bits-size* 16) - (setf *current-bits-size* 32))) - -;; -- the actual assembler ----------------------------------------------------- - - + (setf *current-bits-size* 32))) ;; -- the actual assembler ----------------------------------------------------- @@ -24,140 +20,141 @@ "(operand-value operand) - given operand which may be a number or a symbol then reduce to it's numeric value" (cond - ((numberp operand) - operand) - ((symbolp operand) - (let ((result - (find-symbol (symbol-name operand) - *current-segment-package*))) - (if result - (symbol-value result) - (let ((result - (find-symbol - (symbol-name operand) 'keyword))) - (if result - result - (error "Invalid operand ~A " operand)))))) - (t (error "Invalid operand ~A " operand)))) - + ((numberp operand) + operand) + ((symbolp operand) + (let ((result + (find-symbol (symbol-name operand) + *current-segment-package*))) + (if result + (symbol-value result) + (let ((result + (find-symbol + (symbol-name operand) 'keyword))) + (if result + result + (error "Invalid operand ~A " operand)))))) + (t (error "Invalid operand ~A " operand)))) + (defun operands-match-types-p (operands types) - "(is-operand-type-p operand-type operand) Given an operand type (eg :reg32) + "(is-operand-type-p operand-type operand) Given an operand type (eg :reg32) and an operand (eg :EAX), returns t if that operand is of the correct type" - (labels - ((operand-matches-type-p (op ty) - (funcall - (cadr (assoc ty *operand-type-checkers*)) - (operand-value op)))) + (labels + ((operand-matches-type-p (op ty) + (funcall + (cadr (assoc ty *operand-type-checkers*)) + (operand-value op)))) (reduce #'(lambda (a b) (and a b)) - (mapcar + (mapcar #'operand-matches-type-p operands types)))) - + (defun encoding-length (encoding) "(encoding-length encoding) -- return the 'length' or weight of an encoding used when disambiguating potentially ambigous encodings" - (+ (length encoding) + (+ (length encoding) (if (eq :ib (first (last encoding))) 1 0) (if (eq :iw (first (last encoding))) 2 0) (if (eq :id (first (last encoding))) 4 0))) - -(defun one-description-p - (descriptions) + +(defun one-description-p + (descriptions) "(one-description-p descriptions-list) Quickie predicate to check if we have one description left in our candidate list" (= (length descriptions) 1)) -(defun filter-descriptions-by-number (operands descriptions) +(defun filter-descriptions-by-number (operands descriptions) "(filter-descriptions-by-number operands descriptions) Given an operand list and a list of possible descriptions: pairs then return only those where the number of operands in the descriptions matches the number of operands given" (loop - for (types encoding) in descriptions - when (or (= (length types) (length operands)) - (and (zerop (length operands)) (eq (first types) :|none|))) - collect (list types encoding))) + for (types encoding) in descriptions + when (or (= (length types) (length operands)) + (and (zerop (length operands)) (eq (first types) :|none|))) + collect (list types encoding))) (defun filter-descriptions-by-type (operands descriptions) - "(filter-descriptions-by-type operands descriptions) Return + "(filter-descriptions-by-type operands descriptions) Return only those descriptions that match the types of the operands" (loop - for (types encoding) in descriptions - when (operands-match-types-p operands types) - collect (list types encoding))) + for (types encoding) in descriptions + when (operands-match-types-p operands types) + collect (list types encoding))) (defun filter-descriptions-by-simplicity (operands descriptions) "(pick-simplest-description descriptions) Look for a description with an operand type that is a literal register keyword - an automatic win" (declare (ignore operands) (optimize (debug 3) (safety 1) (compilation-speed 0) (speed 0))) (if - (loop - for (types encoding) in descriptions - for index = 0 then (1+ index) - when (contains-keyword '(:STO :CX :ECX :DX :CL :AL :AX :EAX) encoding) - collect (list types encoding)) - descriptions)) ;; if we don't find anything, pass along to the next filter + (loop + for (types encoding) in descriptions + for index = 0 then (1+ index) + when (contains-keyword '(:STO :CX :ECX :DX :CL :AL :AX :EAX) encoding) + collect (list types encoding)) + descriptions)) ;; if we don't find anything, pass along to the next filter + - (defun pick-smallest-description (descriptions) - "(filter-descriptions-by-type operands descriptions) -Return the description that is likely to result in the + "(filter-descriptions-by-type operands descriptions) +Return the description that is likely to result in the smallest possible encoding" - (let + (let ((candidate-index 0)) (loop - for (types encoding) in descriptions - for index = 0 then (1+ index) - when (< (encoding-length encoding) - (encoding-length - (second (nth index descriptions)))) - do - (setf candidate-index index)) + for (types encoding) in descriptions + for index = 0 then (1+ index) + when (< (encoding-length encoding) + (encoding-length + (second (nth index descriptions)))) + do + (setf candidate-index index)) (nth candidate-index descriptions))) ;; to do ? what if we *still* have alternate encodings ;; adfter going through *those* filters? -(defun find-correct-description (operands - candidate-descriptions) - "(find-correct-description operands candidate-descrptions) +(defun find-correct-description (operands + candidate-descriptions) + "(find-correct-description operands candidate-descrptions) Given a list of operands for an instruction and a list of possible descriptions as a list of (types encoding) pair lists then find the description which most likely satisfies the operands" - (macrolet ((with-description-filter (filterfn &rest body) - `(let ((candidate-descriptions - (apply ,filterfn (list operands candidate-descriptions)))) - (format *debug-io* "Filtered Descriptions ~A~&" - candidate-descriptions) - (if (one-description-p candidate-descriptions) - (first candidate-descriptions) - ,@body)))) - (format *debug-io* - "Operands ~A ~&Possible Descriptions ~A~&" - operands candidate-descriptions) + (macrolet ((with-description-filter + (filterfn &rest body) + `(let ((candidate-descriptions + (apply ,filterfn (list operands candidate-descriptions)))) + (format *debug-io* "Filtered Descriptions ~A~&" + candidate-descriptions) + (if (one-description-p candidate-descriptions) + (first candidate-descriptions) + ,@body)))) + (format *debug-io* + "Operands ~A ~&Possible Descriptions ~A~&" + operands candidate-descriptions) (with-description-filter - #'filter-descriptions-by-number + #'filter-descriptions-by-number + (with-description-filter + #'filter-descriptions-by-type (with-description-filter - #'filter-descriptions-by-type - (with-description-filter - #'filter-descriptions-by-simplicity - (first candidate-descriptions)))))) + #'filter-descriptions-by-simplicity + (first candidate-descriptions)))))) (defun process-opcodes (insn-name operands types encoding instruction) - (format *debug-io* "Processin instruction ~A~&" insn-name) + (format *debug-io* "Processing instruction ~A~&" insn-name) (format *debug-io* "With operands ~A~&" operands) (format *debug-io* "Matching types ~A~&" types) (format *debug-io* "Using encoding ~A~&" encoding) (loop - for code in encoding - do - (if (numberp code) - (setf (get instruction :opcodes) - (append (get instruction :opcodes) (list code))) - (progn (format *debug-io* "~A~&" (gethash code *opcode-encoder-table*)) - (funcall (gethash code *opcode-encoder-table*) - insn-name operands types encoding instruction))))) + for code in encoding + do + (if (numberp code) + (setf (get instruction :opcodes) + (append (get instruction :opcodes) (list code))) + (progn (format *debug-io* "~A~&" (gethash code *opcode-encoder-table*)) + (funcall (gethash code *opcode-encoder-table*) + insn-name operands types encoding instruction))))) ;; ;; turn an encoding into a sequcnce of bytes with no symbols ;; @@ -166,12 +163,12 @@ the description which most likely satisfies the operands" it's operands and it's description produce a stream of bytes for assembly, taking it's encoding into account" (let ((result (make-instruction))) - (format *debug-io* - "Processing encoding of instruction ~A w operands ~A using description ~A~&" - insn-name operands description) - (process-opcodes insn-name operands - (first description) (second description) - result) + (format *debug-io* + "Processing encoding of instruction ~A w operands ~A using description ~A~&" + insn-name operands description) + (process-opcodes insn-name operands + (first description) (second description) + result) (print-instruction "Resulting " result) (flatten-instruction result))) @@ -182,18 +179,18 @@ it's encoding into account" and operand portion of an assembler form, assemble it in the current segment" ;; deal with instruction (format *debug-io* "Looking up instruction ~A~&" instruction) - (multiple-value-bind (instruction operand-descriptions) + (multiple-value-bind (instruction operand-descriptions) (lookup-instruction instruction) (when operand-descriptions (format *debug-io* "Found instruction ~A~&" instruction) (let ((candidate-description - (find-correct-description operands operand-descriptions))) - (emit-bytes-to-segment - (process-encoding - instruction - operands - candidate-description)))))) - + (find-correct-description operands operand-descriptions))) + (emit-bytes-to-segment + (process-encoding + instruction + operands + candidate-description)))))) + (defun assemble-form (form) @@ -207,35 +204,35 @@ a list - it is a list of the above, plus possibly operands" (labels ;; remove dot from the front of a symbol ((remove-dot (x) - (subseq x 1 (length x))) + (subseq x 1 (length x))) ;; test to see if a symbol begins with a dot (begins-with-dot (x) - (char= (char (symbol-name x) 0) #\.))) + (char= (char (symbol-name x) 0) #\.))) (format *debug-io* "--~&Assembling form ~A~%" form) (ctypecase form - ;; value is supposed to be a literal to be poked in - (number (emit-data-to-segment form)) - ;; symbol is supposed to be a reference to a symbol, - ;; or a definition of a symbol unless its a keyword - ;; in which case it's an opcode-less directive - (symbol - (if (symbol-is-in-package form "KEYWORD") - (assemble-instruction-or-directive form nil) - (if (begins-with-dot form) - (add-symbol-definition (remove-dot (symbol-name form))) - (add-symbol-reference (symbol-name form))))) - (list - ;; if the list begins with a keyword, the rest of it - ;; is an instruction - (if (and (symbolp (first form)) - (symbol-is-in-package (first form) "KEYWORD")) - (assemble-instruction-or-directive (first form) (rest form)) - (progn - (assemble-form (first form)) - (when (rest form) - (assemble-form (rest form))))))))) - - + ;; value is supposed to be a literal to be poked in + (number (emit-data-to-segment form)) + ;; symbol is supposed to be a reference to a symbol, + ;; or a definition of a symbol unless its a keyword + ;; in which case it's an opcode-less directive + (symbol + (if (symbol-is-in-package form "KEYWORD") + (assemble-instruction-or-directive form nil) + (if (begins-with-dot form) + (add-symbol-definition (remove-dot (symbol-name form))) + (add-symbol-reference (symbol-name form))))) + (list + ;; if the list begins with a keyword, the rest of it + ;; is an instruction + (if (and (symbolp (first form)) + (symbol-is-in-package (first form) "KEYWORD")) + (assemble-instruction-or-directive (first form) (rest form)) + (progn + (assemble-form (first form)) + (when (rest form) + (assemble-form (rest form))))))))) + + (defun assemble-forms (&rest forms) "(assemble-forms forms) Assemble a list of forms in the current segment" @@ -243,28 +240,3 @@ Assemble a list of forms in the current segment" -;; ;; ;; our first test program -;;(make-instruction-hash-table) - -(make-segment "text" :segment-type 'data-segment :set-to-current t) - -;; (assemble-forms -;; '((.Entry :ADD :EAX 56) -;; (:RET))) - - - -;; (assemble-forms -;; '((:PUSH :EAX) -;; (:SUB :EAX #XFFFEA) -;; (:MOV :EAX :EBX) -;; (:POP :EAX) -;; (:PUSH :EAX) -;; (:RET))) - -;;(print-segment) - -;; (assemble-forms -;; '((.Entry JMP Exit) -;; (:AAD) -;; (.Exit :RET))) \ No newline at end of file diff --git a/x86instructions.lisp b/x86instructions.lisp dissimilarity index 77% index 2ff59b2..6fdb218 100644 --- a/x86instructions.lisp +++ b/x86instructions.lisp @@ -1,1338 +1,1337 @@ - - -(in-package :cl-x86-asm) - -(declaim (optimize (debug 3) (speed 0) (safety 3) (compilation-speed 0))) - -(defparameter *instruction-table* - '((("XORPS") (:|xmm1| :|xmm2/m128|) (#xF #x57 :|/r|)) - (("XORPD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x57 :|/r|)) - (("XOR") (:|EAX| :|imm32|) (:|o32| #x35 :|id|)) - (("XOR") (:AX :|imm16|) (:|o16| #x35 :|iw|)) - (("XOR") (:AL :|imm8|) (#x34 :|ib|)) - (("XOR") (:|r/m32| :|imm8|) (:|o32| #x83 :/6 :|ib|)) - (("XOR") (:|r/m16| :|imm8|) (:|o16| #x83 :/6 :|ib|)) - (("XOR") (:|r/m32| :|imm32|) (:|o32| #x81 :/6 :|id|)) - (("XOR") (:|r/m16| :|imm16|) (:|o16| #x81 :/6 :|iw|)) - (("XOR") (:|r/m8| :|imm8|) (#x80 :/6 :|ib|)) - (("XOR") (:|reg32| :|r/m32|) (:|o32| #x33 :|/r|)) - (("XOR") (:|reg16| :|r/m16|) (:|o16| #x33 :|/r|)) - (("XOR") (:|reg8| :|r/m8|) (#x32 :|/r|)) - (("XOR") (:|r/m32| :|reg32|) (:|o32| #x31 :|/r|)) - (("XOR") (:|r/m16| :|reg16|) (:|o16| #x31 :|/r|)) - (("XOR") (:|r/m8| :|reg8|) (#x30 :|/r|)) - (("XLATB") (:|none|) (#xD7)) - (("XLAT") (:|none|) (#xD7)) - (("XCHG") (:|reg32| :|EAX|) (:|o32| #x90 :|+r|)) - (("XCHG") (:|reg16| :AX) (:|o16| #x90 :|+r|)) - (("XCHG") (:|EAX| :|reg32|) (:|o32| #x90 :|+r|)) - (("XCHG") (:AX :|reg16|) (:|o16| #x90 :|+r|)) - (("XCHG") (:|r/m32| :|reg32|) (:|o32| #x87 :|/r|)) - (("XCHG") (:|r/m16| :|reg16|) (:|o16| #x87 :|/r|)) - (("XCHG") (:|r/m8| :|reg8|) (#x86 :|/r|)) - (("XCHG") (:|reg32| :|r/m32|) (:|o32| #x87 :|/r|)) - (("XCHG") (:|reg16| :|r/m8|) (:|o16| #x87 :|/r|)) - (("XCHG") (:|reg8| :|r/m8|) (#x86 :|/r|)) - (("XBTS") (:|reg32| :|r/m32|) (:|o32| #xF #xA6 :|/r|)) - (("XBTS") (:|reg16| :|r/m16|) (:|o16| #xF #xA6 :|/r|)) - (("XADD") (:|r/m32| :|reg32|) (:|o32| #xF #xC1 :|/r|)) - (("XADD") (:|r/m16| :|reg16|) (:|o16| #xF #xC1 :|/r|)) - (("XADD") (:|r/m8| :|reg8|) (#xF #xC0 :|/r|)) - (("WRSHR") (:|r/m32|) (#xF #x37 :/0)) - (("WRMSR") (:|none|) (#xF #x30)) - (("WBINVD") (:|none|) (#xF #x9)) - (("FWAIT") (:|none|) (#x9B)) - (("WAIT") (:|none|) (#x9B)) - (("VERW") (:|r/m16|) (#xF #x0 :/5)) - (("VERR") (:|r/m16|) (#xF #x0 :/4)) - (("UNPCKLPS") (:|xmm1| :|xmm2/m128|) (#xF #x14 :|/r|)) - (("UNPCKLPD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x14 :|/r|)) - (("UNPCKHPS") (:|xmm1| :|xmm2/m128|) (#xF #x15 :|/r|)) - (("UNPCKHPD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x15 :|/r|)) - (("UMOV") (:|reg32| :|r/m32|) (:|o32| #xF #x13 :|/r|)) - (("UMOV") (:|reg16| :|r/m16|) (:|o16| #xF #x13 :|/r|)) - (("UMOV") (:|reg8| :|r/m8|) (#xF #x12 :|/r|)) - (("UMOV") (:|r/m32| :|reg32|) (:|o32| #xF #x11 :|/r|)) - (("UMOV") (:|r/m16| :|reg16|) (:|o16| #xF #x11 :|/r|)) - (("UMOV") (:|r/m8| :|reg8|) (#xF #x10 :|/r|)) - (("UD2") (:|none|) (#xF #xB)) - (("UD1") (:|none|) (#xF #xB9)) - (("UD0") (:|none|) (#xF #xFF)) - (("UCOMISS") (:|xmm1| :|xmm2/m128|) (#xF #x2E :|/r|)) - (("UCOMISD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x2E :|/r|)) - (("TEST") (:|EAX| :|imm32|) (:|o32| #xA9 :|id|)) - (("TEST") (:AX :|imm16|) (:|o16| #xA9 :|iw|)) - (("TEST") (:AL :|imm8|) (#xA8 :|ib|)) - (("TEST") (:|r/m32| :|imm32|) (:|o32| #xF7 :/0 :|id|)) - (("TEST") (:|r/m16| :|imm16|) (:|o16| #xF7 :/0 :|iw|)) - (("TEST") (:|r/m8| :|imm8|) (#xF6 :/0 :|ib|)) - (("TEST") (:|r/m32| :|reg32|) (:|o32| #x85 :|/r|)) - (("TEST") (:|r/m16| :|reg16|) (:|o16| #x85 :|/r|)) - (("TEST") (:|r/m8| :|reg8|) (#x84 :|/r|)) - (("SYSRET") (:|none|) (#xF #x7)) - (("SYSEXIT") (:|none|) (#xF #x35)) - (("SYSENTER") (:|none|) (#xF #x34)) - (("SYSCALL") (:|none|) (#xF #x5)) - (("SVTS") (:|m80|) (#xF #x7C :/0)) - (("SVLDT") (:|m80|) (#xF #x7A :/0)) - (("SVDC") (:|m80| :|segreg|) (#xF #x78 :|/r|)) - (("SUBSS") (:|xmm1| :|xmm2/m128|) (#xF3 #xF #x5C :|/r|)) - (("SUBSD") (:|xmm1| :|xmm2/m128|) (#xF2 #xF #x5C :|/r|)) - (("SUBPS") (:|xmm1| :|xmm2/m128|) (#xF #x5C :|/r|)) - (("SUBPD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x5C :|/r|)) - (("SUB") (:|EAX| :|imm32|) (:|o32| #x2D :|id|)) - (("SUB") (:AX :|imm16|) (:|o16| #x2D :|iw|)) - (("SUB") (:AL :|imm8|) (#x2C :|ib|)) - (("SUB") (:|r/m32| :|imm8|) (:|o32| #x83 :/5 :|ib|)) - (("SUB") (:|r/m16| :|imm8|) (:|o16| #x83 :/5 :|ib|)) - (("SUB") (:|r/m32| :|imm32|) (:|o32| #x81 :/5 :|id|)) - (("SUB") (:|r/m16| :|imm16|) (:|o16| #x81 :/5 :|iw|)) - (("SUB") (:|r/m8| :|imm8|) (#x80 :/5 :|ib|)) - (("SUB") (:|reg32| :|r/m32|) (:|o32| #x2B :|/r|)) - (("SUB") (:|reg16| :|r/m16|) (:|o16| #x2B :|/r|)) - (("SUB") (:|reg8| :|r/m8|) (#x2A :|/r|)) - (("SUB") (:|r/m32| :|reg32|) (:|o32| #x29 :|/r|)) - (("SUB") (:|r/m16| :|reg16|) (:|o16| #x29 :|/r|)) - (("SUB") (:|r/m8| :|reg8|) (#x28 :|/r|)) - (("STR") (:|r/m16|) (#xF #x0 :/1)) - (("STOSD") (:|none|) (:|o32| #xAB)) - (("STOSW") (:|none|) (:|o16| #xAB)) - (("STOSB") (:|none|) (#xAA)) - (("STMXCSR") (:|m32|) (#xF #xAE :/3)) - (("STI") (:|none|) (#xFB)) - (("STD") (:|none|) (#xFD)) - (("STC") (:|none|) (#xF9)) - (("SQRTSS") (:|xmm1| :|xmm2/m128|) (#xF3 #xF #x51 :|/r|)) - (("SQRTSD") (:|xmm1| :|xmm2/m128|) (#xF2 #xF #x51 :|/r|)) - (("SQRTPS") (:|xmm1| :|xmm2/m128|) (#xF #x51 :|/r|)) - (("SQRTPD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x51 :|/r|)) - (("SMSW") (:|r/m16|) (#xF #x1 :/4)) - (("SMINTOLD") (:|none|) (#xF #x7E)) - (("SMINT") (:|none|) (#xF #x38)) - (("SMI") (:|none|) (#xF1)) - (("SHUFPS") (:|xmm1| :|xmm2/m128| :|imm8|) (#xF #xC6 :|/r| :|ib|)) - (("SHUFPD") (:|xmm1| :|xmm2/m128| :|imm8|) (#x66 #xF #xC6 :|/r| :|ib|)) - (("SHRD") (:|r/m32| :|reg32| :CL) (:|o32| #xF #xAD :|/r|)) - (("SHRD") (:|r/m16| :|reg16| :CL) (:|o16| #xF #xAD :|/r|)) - (("SHRD") (:|r/m32| :|reg32| :|imm8|) (:|o32| #xF #xAC :|/r| :|ib|)) - (("SHRD") (:|r/m16| :|reg16| :|imm8|) (:|o16| #xF #xAC :|/r| :|ib|)) - (("SHLD") (:|r/m16| :|reg32| :CL) (:|o32| #xF #xA5 :|/r|)) - (("SHLD") (:|r/m16| :|reg16| :CL) (:|o16| #xF #xA5 :|/r|)) - (("SHLD") (:|r/m16| :|reg32| :|imm8|) (:|o32| #xF #xA4 :|/r| :|ib|)) - (("SHLD") (:|r/m16| :|reg16| :|imm8|) (:|o16| #xF #xA4 :|/r| :|ib|)) - (("SHR") (:|r/m32| :|imm8|) (:|o32| #xC1 :/5 :|ib|)) - (("SHR") (:|r/m32| :CL) (:|o32| #xD3 :/5)) - (("SHR") (:|r/m32| :|1|) (:|o32| #xD1 :/5)) - (("SHR") (:|r/m16| :|imm8|) (:|o16| #xC1 :/5 :|ib|)) - (("SHR") (:|r/m16| :CL) (:|o16| #xD3 :/5)) - (("SHR") (:|r/m16| :|1|) (:|o16| #xD1 :/5)) - (("SHR") (:|r/m8| :|imm8|) (#xC0 :/5 :|ib|)) - (("SHR") (:|r/m8| :CL) (#xD2 :/5)) - (("SHR") (:|r/m8| :|1|) (#xD0 :/5)) - (("SHL") (:|r/m32| :|imm8|) (:|o32| #xC1 :/4 :|ib|)) - (("SHL") (:|r/m32| :CL) (:|o32| #xD3 :/4)) - (("SHL") (:|r/m32| :|1|) (:|o32| #xD1 :/4)) - (("SHL") (:|r/m16| :|imm8|) (:|o16| #xC1 :/4 :|ib|)) - (("SHL") (:|r/m16| :CL) (:|o16| #xD3 :/4)) - (("SHL") (:|r/m16| :|1|) (:|o16| #xD1 :/4)) - (("SHL") (:|r/m8| :|imm8|) (#xC0 :/4 :|ib|)) - (("SHL") (:|r/m8| :CL) (#xD2 :/4)) - (("SHL") (:|r/m8| :|1|) (#xD0 :/4)) - (("SLDT") (:|r/m16|) (#xF #x0 :/0)) - (("SIDT") (:|mem|) (#xF #x1 :/1)) - (("SGDT") (:|mem|) (#xF #x1 :/0)) - (("SFENCE") (:|none|) (#xF #xAE :/7)) -;; (("SETcc") (:|r/m8|) (#xF #x90 :|+cc| :/2)) - (("SCASD") (:|none|) (:|o32| #xAF)) - (("SCASW") (:|none|) (:|o16| #xAF)) - (("SCASB") (:|none|) (#xAE)) - (("SBB") (:|EAX| :|imm32|) (:|o32| #x1D :|id|)) - (("SBB") (:AX :|imm16|) (:|o16| #x1D :|iw|)) - (("SBB") (:AL :|imm8|) (#x1C :|ib|)) - (("SBB") (:|r/m32| :|imm8|) (:|o32| #x83 :/3 :|ib|)) - (("SBB") (:|r/m16| :|imm8|) (:|o16| #x83 :/3 :|ib|)) - (("SBB") (:|r/m32| :|imm32|) (:|o32| #x81 :/3 :|id|)) - (("SBB") (:|r/m16| :|imm16|) (:|o16| #x81 :/3 :|iw|)) - (("SBB") (:|r/m8| :|imm8|) (#x80 :/3 :|ib|)) - (("SBB") (:|reg32| :|r/m32|) (:|o32| #x1B :|/r|)) - (("SBB") (:|reg16| :|r/m16|) (:|o16| #x1B :|/r|)) - (("SBB") (:|reg8| :|r/m8|) (#x1A :|/r|)) - (("SBB") (:|r/m32| :|reg32|) (:|o32| #x19 :|/r|)) - (("SBB") (:|r/m16| :|reg16|) (:|o16| #x19 :|/r|)) - (("SBB") (:|r/m8| :|reg8|) (#x18 :|/r|)) - (("SALC") (:|none|) (#xD6)) - (("SAR") (:|r/m32| :|imm8|) (:|o32| #xC1 :/7 :|ib|)) - (("SAR") (:|r/m32| :CL) (:|o32| #xD3 :/7)) - (("SAR") (:|r/m32| :|1|) (:|o32| #xD1 :/7)) - (("SAR") (:|r/m16| :|imm8|) (:|o16| #xC1 :/7 :|ib|)) - (("SAR") (:|r/m16| :CL) (:|o16| #xD3 :/7)) - (("SAR") (:|r/m16| :|1|) (:|o16| #xD1 :/7)) - (("SAR") (:|r/m8| :|imm8|) (#xC0 :/7 :|ib|)) - (("SAR") (:|r/m8| :CL) (#xD2 :/7)) - (("SAR") (:|r/m8| :|1|) (#xD0 :/7)) - (("SAL") (:|r/m32| :|imm8|) (:|o32| #xC1 :/4 :|ib|)) - (("SAL") (:|r/m32| :CL) (:|o32| #xD3 :/4)) - (("SAL") (:|r/m32| :|1|) (:|o32| #xD1 :/4)) - (("SAL") (:|r/m16| :|imm8|) (:|o16| #xC1 :/4 :|ib|)) - (("SAL") (:|r/m16| :CL) (:|o16| #xD3 :/4)) - (("SAL") (:|r/m16| :|1|) (:|o16| #xD1 :/4)) - (("SAL") (:|r/m8| :|imm8|) (#xC0 :/4 :|ib|)) - (("SAL") (:|r/m8| :CL) (#xD2 :/4)) - (("SAL") (:|r/m8| :|1|) (#xD0 :/4)) - (("SAHF") (:|none|) (#x9E)) - (("RSTS") (:|m80|) (#xF #x7D :/0)) - (("RSQRTSS") (:|xmm1| :|xmm2/m128|) (#xF3 #xF #x52 :|/r|)) - (("RSQRTPS") (:|xmm1| :|xmm2/m128|) (#xF #x52 :|/r|)) - (("RSM") (:|none|) (#xF #xAA)) - (("RSLDT") (:|m80|) (#xF #x7B :/0)) - (("RSDC") (:|segreg| :|m80|) (#xF #x79 :|/r|)) - (("ROR") (:|r/m32| :|imm8|) (:|o32| #xC1 :/1 :|ib|)) - (("ROR") (:|r/m32| :CL) (:|o32| #xD3 :/1)) - (("ROR") (:|r/m32| :|1|) (:|o32| #xD1 :/1)) - (("ROR") (:|r/m16| :|imm8|) (:|o16| #xC1 :/1 :|ib|)) - (("ROR") (:|r/m16| :CL) (:|o16| #xD3 :/1)) - (("ROR") (:|r/m16| :|1|) (:|o16| #xD1 :/1)) - (("ROR") (:|r/m8| :|imm8|) (#xC0 :/1 :|ib|)) - (("ROR") (:|r/m8| :CL) (#xD2 :/1)) - (("ROR") (:|r/m8| :|1|) (#xD0 :/1)) - (("ROL") (:|r/m32| :|imm8|) (:|o32| #xC1 :/0 :|ib|)) - (("ROL") (:|r/m32| :CL) (:|o32| #xD3 :/0)) - (("ROL") (:|r/m32| :|1|) (:|o32| #xD1 :/0)) - (("ROL") (:|r/m16| :|imm8|) (:|o16| #xC1 :/0 :|ib|)) - (("ROL") (:|r/m16| :CL) (:|o16| #xD3 :/0)) - (("ROL") (:|r/m16| :|1|) (:|o16| #xD1 :/0)) - (("ROL") (:|r/m8| :|imm8|) (#xC0 :/0 :|ib|)) - (("ROL") (:|r/m8| :CL) (#xD2 :/0)) - (("ROL") (:|r/m8| :|1|) (#xD0 :/0)) - (("RETN") (:|imm16|) (#xC2 :|iw|)) - (("RETN") (:|none|) (#xC3)) - (("RETF") (:|imm16|) (#xCA :|iw|)) - (("RETF") (:|none|) (#xCB)) - (("RET") (:|imm16|) (#xC2 :|iw|)) - (("RET") (:|none|) (#xC3)) - (("RDTSC") (:|none|) (#xF #x31)) - (("RDSHR") (:|r/m32|) (#xF #x36 :/0)) - (("RDPMC") (:|none|) (#xF #x33)) - (("RDMSR") (:|none|) (#xF #x32)) - (("RCPSS") (:|xmm1| :|xmm2/m128|) (#xF3 #xF #x53 :|/r|)) - (("RCPPS") (:|xmm1| :|xmm2/m128|) (#xF #x53 :|/r|)) - (("RCR") (:|r/m32| :|imm8|) (:|o32| #xC1 :/3 :|ib|)) - (("RCR") (:|r/m32| :CL) (:|o32| #xD3 :/3)) - (("RCR") (:|r/m32| :|1|) (:|o32| #xD1 :/3)) - (("RCR") (:|r/m16| :|imm8|) (:|o16| #xC1 :/3 :|ib|)) - (("RCR") (:|r/m16| :CL) (:|o16| #xD3 :/3)) - (("RCR") (:|r/m16| :|1|) (:|o16| #xD1 :/3)) - (("RCR") (:|r/m8| :|imm8|) (#xC0 :/3 :|ib|)) - (("RCR") (:|r/m8| :CL) (#xD2 :/3)) - (("RCR") (:|r/m8| :|1|) (#xD0 :/3)) - (("RCL") (:|r/m32| :|imm8|) (:|o32| #xC1 :/2 :|ib|)) - (("RCL") (:|r/m32| :CL) (:|o32| #xD3 :/2)) - (("RCL") (:|r/m32| :|1|) (:|o32| #xD1 :/2)) - (("RCL") (:|r/m16| :|imm8|) (:|o16| #xC1 :/2 :|ib|)) - (("RCL") (:|r/m16| :CL) (:|o16| #xD3 :/2)) - (("RCL") (:|r/m16| :|1|) (:|o16| #xD1 :/2)) - (("RCL") (:|r/m8| :|imm8|) (#xC0 :/2 :|ib|)) - (("RCL") (:|r/m8| :CL) (#xD2 :/2)) - (("RCL") (:|r/m8| :|1|) (#xD0 :/2)) - (("PXOR") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xEF :|/r|)) - (("PXOR") (:|mm1| :|mm2/m64|) (#xF #xEF :|/r|)) - (("PUSHFW") (:|none|) (:|o16| #x9C)) - (("PUSHFD") (:|none|) (:|o32| #x9C)) - (("PUSHF") (:|none|) (#x9C)) - (("PUSHAW") (:|none|) (:|o16| #x60)) - (("PUSHAD") (:|none|) (:|o32| #x60)) - (("PUSHA") (:|none|) (#x60)) - (("PUSH") (:|imm32|) (:|o32| #x68 :|id|)) - (("PUSH") (:|imm16|) (:|o16| #x68 :|iw|)) - (("PUSH") (:|imm8|) (#x6A :|ib|)) - (("PUSH") (:GS) (#xF #xA8)) - (("PUSH") (:FS) (#xF #xA0)) - (("PUSH") (:SS) (#x16)) - (("PUSH") (:ES) (#x6)) - (("PUSH") (:DS) (#x1E)) - (("PUSH") (:CS) (#xE)) - (("PUSH") (:|r/m32|) (:|o32| #xFF :/6)) - (("PUSH") (:|r/m16|) (:|o16| #xFF :/6)) - (("PUSH") (:|reg32|) (:|o32| #x50 :|+r|)) - (("PUSH") (:|reg16|) (:|o16| #x50 :|+r|)) - (("PUNPCKLQDQ") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x6C :|/r|)) - (("PUNPCKLDQ") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x62 :|/r|)) - (("PUNPCKLWD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x61 :|/r|)) - (("PUNPCKLBW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x60 :|/r|)) - (("PUNPCKLDQ") (:|mm1| :|mm2/m32|) (#xF #x62 :|/r|)) - (("PUNPCKLWD") (:|mm1| :|mm2/m32|) (#xF #x61 :|/r|)) - (("PUNPCKLBW") (:|mm1| :|mm2/m32|) (#xF #x60 :|/r|)) - (("PUNPCKHQDQ") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x6D :|/r|)) - (("PUNPCKHDQ") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x6A :|/r|)) - (("PUNPCKHWD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x69 :|/r|)) - (("PUNPCKHBW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x68 :|/r|)) - (("PUNPCKHDQ") (:|mm1| :|mm2/m64|) (#xF #x6A :|/r|)) - (("PUNPCKHWD") (:|mm1| :|mm2/m64|) (#xF #x69 :|/r|)) - (("PUNPCKHBW") (:|mm1| :|mm2/m64|) (#xF #x68 :|/r|)) - (("PSWAPD") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xBB)) - (("PSUBSIW") (:|mm1| :|mm2/m64|) (#xF #x55 :|/r|)) - (("PSUBUSW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xD9 :|/r|)) - (("PSUBUSB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xD8 :|/r|)) - (("PSUBUSW") (:|mm1| :|mm2/m64|) (#xF #xD9 :|/r|)) - (("PSUBUSB") (:|mm1| :|mm2/m64|) (#xF #xD8 :|/r|)) - (("PSUBSW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xE9 :|/r|)) - (("PSUBSB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xE8 :|/r|)) - (("PSUBSW") (:|mm1| :|mm2/m64|) (#xF #xE9 :|/r|)) - (("PSUBSB") (:|mm1| :|mm2/m64|) (#xF #xE8 :|/r|)) - (("PSUBQ") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xFB :|/r|)) - (("PSUBD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xFA :|/r|)) - (("PSUBW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xF9 :|/r|)) - (("PSUBB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xF8 :|/r|)) - (("PSUBQ") (:|mm1| :|mm2/m64|) (#xF #xFB :|/r|)) - (("PSUBD") (:|mm1| :|mm2/m64|) (#xF #xFA :|/r|)) - (("PSUBW") (:|mm1| :|mm2/m64|) (#xF #xF9 :|/r|)) - (("PSUBB") (:|mm1| :|mm2/m64|) (#xF #xF8 :|/r|)) - (("PSRLDQ") (:|xmm1| :|imm8|) (#x66 #xF #x73 :/3 :|ib|)) - (("PSRLQ") (:|xmm| :|imm8|) (#x66 #xF #x73 :/2 :|ib|)) - (("PSRLQ") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xD3 :|/r|)) - (("PSRLQ") (:|mm| :|imm8|) (#xF #x73 :/2 :|ib|)) - (("PSRLQ") (:|mm1| :|mm2/m64|) (#xF #xD3 :|/r|)) - (("PSRLD") (:|xmm| :|imm8|) (#x66 #xF #x72 :/2 :|ib|)) - (("PSRLD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xD2 :|/r|)) - (("PSRLD") (:|mm| :|imm8|) (#xF #x72 :/2 :|ib|)) - (("PSRLD") (:|mm1| :|mm2/m64|) (#xF #xD2 :|/r|)) - (("PSRLW") (:|xmm| :|imm8|) (#x66 #xF #x71 :/2 :|ib|)) - (("PSRLW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xD1 :|/r|)) - (("PSRLW") (:|mm| :|imm8|) (#xF #x71 :/2 :|ib|)) - (("PSRLW") (:|mm1| :|mm2/m64|) (#xF #xD1 :|/r|)) - (("PSRAD") (:|xmm| :|imm8|) (#x66 #xF #x72 :/4 :|ib|)) - (("PSRAD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xE2 :|/r|)) - (("PSRAD") (:|mm| :|imm8|) (#xF #x72 :/4 :|ib|)) - (("PSRAD") (:|mm1| :|mm2/m64|) (#xF #xE2 :|/r|)) - (("PSRAW") (:|xmm| :|imm8|) (#x66 #xF #x71 :/4 :|ib|)) - (("PSRAW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xE1 :|/r|)) - (("PSRAW") (:|mm| :|imm8|) (#xF #x71 :/4 :|ib|)) - (("PSRAW") (:|mm1| :|mm2/m64|) (#xF #xE1 :|/r|)) - (("PSLLDQ") (:|xmm1| :|imm8|) (#x66 #xF #x73 :/7 :|ib|)) - (("PSLLQ") (:|xmm| :|imm8|) (#x66 #xF #x73 :/6 :|ib|)) - (("PSLLQ") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xF3 :|/r|)) - (("PSLLQ") (:|mm| :|imm8|) (#xF #x73 :/6 :|ib|)) - (("PSLLQ") (:|mm1| :|mm2/m64|) (#xF #xF3 :|/r|)) - (("PSLLD") (:|xmm| :|imm8|) (#x66 #xF #x72 :/6 :|ib|)) - (("PSLLD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xF2 :|/r|)) - (("PSLLD") (:|mm| :|imm8|) (#xF #x72 :/6 :|ib|)) - (("PSLLD") (:|mm1| :|mm2/m64|) (#xF #xF2 :|/r|)) - (("PSLLW") (:|xmm| :|imm8|) (#x66 #xF #x71 :/6 :|ib|)) - (("PSLLW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xF1 :|/r|)) - (("PSLLW") (:|mm| :|imm8|) (#xF #x71 :/6 :|ib|)) - (("PSLLW") (:|mm1| :|mm2/m64|) (#xF #xF1 :|/r|)) - (("PSHUFW") (:|mm1| :|mm2/m64| :|imm8|) (#xF #x70 :|/r| :|ib|)) - (("PSHUFLW") (:|xmm1| :|xmm2/m128| :|imm8|) (#xF2 #xF #x70 :|/r| :|ib|)) - (("PSHUFHW") (:|xmm1| :|xmm2/m128| :|imm8|) (#xF3 #xF #x70 :|/r| :|ib|)) - (("PSHUFD") (:|xmm1| :|xmm2/m128| :|imm8|) (#x66 #xF #x70 :|/r| :|ib|)) - (("PSADBW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xF6 :|/r|)) - (("PSADBW") (:|mm1| :|mm2/m64|) (#xF #xF6 :|/r|)) - (("PREFETCHT2") (:|m8|) (#xF #x18 :/3)) - (("PREFETCHT1") (:|m8|) (#xF #x18 :/2)) - (("PREFETCHT0") (:|m8|) (#xF #x18 :/1)) - (("PREFETCHNTA") (:|m8|) (#xF #x18 :/0)) - (("PREFETCHW") (:|mem8|) (#xF #xD :/1)) - (("PREFETCH") (:|mem8|) (#xF #xD :/0)) - (("POR") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xEB :|/r|)) - (("POR") (:|mm1| :|mm2/m64|) (#xF #xEB :|/r|)) - (("POPFD") (:|none|) (:|o32| #x9D)) - (("POPFW") (:|none|) (:|o16| #x9D)) - (("POPF") (:|none|) (#x9D)) - (("POPAD") (:|none|) (:|o32| #x61)) - (("POPAW") (:|none|) (:|o16| #x61)) - (("POPA") (:|none|) (#x61)) - (("POP") (:GS) (#xF #xA9)) - (("POP") (:FS) (#xF #xA1)) - (("POP") (:SS) (#x17)) - (("POP") (:ES) (#x7)) - (("POP") (:DS) (#x1F)) - (("POP") (:CS) (#xF)) - (("POP") (:|r/m32|) (:|o32| #x8F :/0)) - (("POP") (:|r/m16|) (:|o16| #x8F :/0)) - (("POP") (:|reg32|) (:|o32| #x58 :|+r|)) - (("POP") (:|reg16|) (:|o16| #x58 :|+r|)) - (("PMVGEZB") (:|mmxreg| :|mem64|) (#xF #x5C :|/r|)) - (("PMVLZB") (:|mmxreg| :|mem64|) (#xF #x5B :|/r|)) - (("PMVNZB") (:|mmxreg| :|mem64|) (#xF #x5A :|/r|)) - (("PMVZB") (:|mmxreg| :|mem64|) (#xF #x58 :|/r|)) - (("PMULUDQ") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xF4 :|/r|)) - (("PMULUDQ") (:|mm1| :|mm2/m64|) (#xF #xF4 :|/r|)) - (("PMULLW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xD5 :|/r|)) - (("PMULHW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xE5 :|/r|)) - (("PMULLW") (:|mm1| :|mm2/m64|) (#xF #xD5 :|/r|)) - (("PMULHW") (:|mm1| :|mm2/m64|) (#xF #xE5 :|/r|)) - (("PMULHUW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xE4 :|/r|)) - (("PMULHUW") (:|mm1| :|mm2/m64|) (#xF #xE4 :|/r|)) - (("PMULHRWA") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xB7)) - (("PMULHRIW") (:|mm1| :|mm2/m64|) (#xF #x5D :|/r|)) - (("PMULHRWC") (:|mm1| :|mm2/m64|) (#xF #x59 :|/r|)) - (("PMOVMSKB") (:|reg32| :|xmm|) (#x66 #xF #xD7 :|/r|)) - (("PMOVMSKB") (:|reg32| :|mm|) (#xF #xD7 :|/r|)) - (("PMINUB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xDA :|/r|)) - (("PMINUB") (:|mm1| :|mm2/m64|) (#xF #xDA :|/r|)) - (("PMINSW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xEA :|/r|)) - (("PMINSW") (:|mm1| :|mm2/m64|) (#xF #xEA :|/r|)) - (("PMAXUB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xDE :|/r|)) - (("PMAXUB") (:|mm1| :|mm2/m64|) (#xF #xDE :|/r|)) - (("PMAXSW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xEE :|/r|)) - (("PMAXSW") (:|mm1| :|mm2/m64|) (#xF #xEE :|/r|)) - (("PMAGW") (:|mm1| :|mm2/m64|) (#xF #x52 :|/r|)) - (("PMADDWD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xF5 :|/r|)) - (("PMADDWD") (:|mm1| :|mm2/m64|) (#xF #xF5 :|/r|)) - (("PMACHRIW") (:|mm| :|m64|) (#xF #x5E :|/r|)) - (("PINSRW") (:|xmm| :|r16/r32/m16| :|imm8|) (#x66 #xF #xC4 :|/r| :|ib|)) - (("PINSRW") (:|mm| :|r16/r32/m16| :|imm8|) (#xF #xC4 :|/r| :|ib|)) - (("PI2FW") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xC)) - (("PI2FD") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xD)) - (("PFSUBR") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xAA)) - (("PFSUB") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #x9A)) - (("PFRSQRT") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #x97)) - (("PFRSQIT1") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xA7)) - (("PFRCPIT2") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xB6)) - (("PFRCPIT1") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xA6)) - (("PFRCP") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #x96)) - (("PFPNACC") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #x8E)) - (("PFNACC") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #x8A)) - (("PFMUL") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xB4)) - (("PFMIN") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #x94)) - (("PFMAX") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xA4)) - (("PFCMPGT") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xA0)) - (("PFCMPGE") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #x90)) - (("PFCMPEQ") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xB0)) - (("PFADD") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #x9E)) - (("PFACC") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xAE)) - (("PF2IW") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #x1C)) - (("PF2ID") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #x1D)) - (("PEXTRW") (:|reg32| :|xmm| :|imm8|) (#x66 #xF #xC5 :|/r| :|ib|)) - (("PEXTRW") (:|reg32| :|mm| :|imm8|) (#xF #xC5 :|/r| :|ib|)) - (("PDISTIB") (:|mm| :|m64|) (#xF #x54 :|/r|)) - (("PCMPGTD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x66 :|/r|)) - (("PCMPGTW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x65 :|/r|)) - (("PCMPGTB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x64 :|/r|)) - (("PCMPEQD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x76 :|/r|)) - (("PCMPEQW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x75 :|/r|)) - (("PCMPEQB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x74 :|/r|)) - (("PCMPGTD") (:|mm1| :|mm2/m64|) (#xF #x66 :|/r|)) - (("PCMPGTW") (:|mm1| :|mm2/m64|) (#xF #x65 :|/r|)) - (("PCMPGTB") (:|mm1| :|mm2/m64|) (#xF #x64 :|/r|)) - (("PCMPEQD") (:|mm1| :|mm2/m64|) (#xF #x76 :|/r|)) - (("PCMPEQW") (:|mm1| :|mm2/m64|) (#xF #x75 :|/r|)) - (("PCMPEQB") (:|mm1| :|mm2/m64|) (#xF #x74 :|/r|)) - (("PAVGUSB") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xBF)) - (("PAVGW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xE3 :|/r|)) - (("PAVGB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xE0 :|/r|)) - (("PAVGW") (:|mm1| :|mm2/m64|) (#xF #xE3 :|/r|)) - (("PAVGB") (:|mm1| :|mm2/m64|) (#xF #xE0 :|/r|)) - (("PAVEB") (:|mmxreg| :|r/m64|) (#xF #x50 :|/r|)) - (("PAUSE") (:|none|) (#xF3 #x90)) - (("PANDN") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xDF :|/r|)) - (("PAND") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xDB :|/r|)) - (("PANDN") (:|mm1| :|mm2/m64|) (#xF #xDF :|/r|)) - (("PAND") (:|mm1| :|mm2/m64|) (#xF #xDB :|/r|)) - (("PADDUSW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xDD :|/r|)) - (("PADDUSB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xDC :|/r|)) - (("PADDUSW") (:|mm1| :|mm2/m64|) (#xF #xDD :|/r|)) - (("PADDUSB") (:|mm1| :|mm2/m64|) (#xF #xDC :|/r|)) - (("PADDSIW") (:|mmxreg| :|r/m64|) (#xF #x51 :|/r|)) - (("PADDSW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xED :|/r|)) - (("PADDSB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xEC :|/r|)) - (("PADDSW") (:|mm1| :|mm2/m64|) (#xF #xED :|/r|)) - (("PADDSB") (:|mm1| :|mm2/m64|) (#xF #xEC :|/r|)) - (("PADDQ") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xD4 :|/r|)) - (("PADDQ") (:|mm1| :|mm2/m64|) (#xF #xD4 :|/r|)) - (("PADDD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xFE :|/r|)) - (("PADDW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xFD :|/r|)) - (("PADDB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xFC :|/r|)) - (("PADDD") (:|mm1| :|mm2/m64|) (#xF #xFE :|/r|)) - (("PADDW") (:|mm1| :|mm2/m64|) (#xF #xFD :|/r|)) - (("PADDB") (:|mm1| :|mm2/m64|) (#xF #xFC :|/r|)) - (("PACKUSWB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x67 :|/r|)) - (("PACKSSWB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x63 :|/r|)) - (("PACKSSDW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x6B :|/r|)) - (("PACKUSWB") (:|mm1| :|mm2/m64|) (#xF #x67 :|/r|)) - (("PACKSSWB") (:|mm1| :|mm2/m64|) (#xF #x63 :|/r|)) - (("PACKSSDW") (:|mm1| :|mm2/m64|) (#xF #x6B :|/r|)) - (("OUTSD") (:|none|) (:|o32| #x6F)) - (("OUTSW") (:|none|) (:|o16| #x6F)) - (("OUTSB") (:|none|) (#x6E)) - (("OUT") (:DX :|EAX|) (:|o32| #xEF)) - (("OUT") (:DX :AX) (:|o16| #xEF)) - (("OUT") (:DX :AL) (#xEE)) - (("OUT") (:|imm8| :|EAX|) (:|o32| #xE7 :|ib|)) - (("OUT") (:|imm8| :AX) (:|o16| #xE7 :|ib|)) - (("OUT") (:|imm8| :AL) (#xE6 :|ib|)) - (("ORPS") (:|xmm1| :|xmm2/m128|) (#xF #x56 :|/r|)) - (("ORPD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x56 :|/r|)) - (("OR") (:|EAX| :|imm32|) (:|o32| #xD :|id|)) - (("OR") (:AX :|imm16|) (:|o16| #xD :|iw|)) - (("OR") (:AL :|imm8|) (#xC :|ib|)) - (("OR") (:|r/m32| :|imm8|) (:|o32| #x83 :/1 :|ib|)) - (("OR") (:|r/m16| :|imm8|) (:|o16| #x83 :/1 :|ib|)) - (("OR") (:|r/m32| :|imm32|) (:|o32| #x81 :/1 :|id|)) - (("OR") (:|r/m16| :|imm16|) (:|o16| #x81 :/1 :|iw|)) - (("OR") (:|r/m8| :|imm8|) (#x80 :/1 :|ib|)) - (("OR") (:|reg32| :|r/m32|) (:|o32| #xB :|/r|)) - (("OR") (:|reg16| :|r/m16|) (:|o16| #xB :|/r|)) - (("OR") (:|reg8| :|r/m8|) (#xA :|/r|)) - (("OR") (:|r/m32| :|reg32|) (:|o32| #x9 :|/r|)) - (("OR") (:|r/m16| :|reg16|) (:|o16| #x9 :|/r|)) - (("OR") (:|r/m8| :|reg8|) (#x8 :|/r|)) - (("NOP") (:|none|) (#x90)) - (("NOT") (:|r/m32|) (:|o32| #xF7 :/2)) - (("NOT") (:|r/m16|) (:|o16| #xF7 :/2)) - (("NOT") (:|r/m8|) (#xF6 :/2)) - (("NEG") (:|r/m32|) (:|o32| #xF7 :/3)) - (("NEG") (:|r/m16|) (:|o16| #xF7 :/3)) - (("NEG") (:|r/m8|) (#xF6 :/3)) - (("MULSS") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #x59 :|/r|)) - (("MULSD") (:|xmm1| :|xmm2/mem32|) (#xF2 #xF #x59 :|/r|)) - (("MULPS") (:|xmm1| :|xmm2/mem128|) (#xF #x59 :|/r|)) - (("MULPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #x59 :|/r|)) - (("MUL") (:|r/m32|) (:|o32| #xF7 :/4)) - (("MUL") (:|r/m16|) (:|o16| #xF7 :/4)) - (("MUL") (:|r/m8|) (#xF6 :/4)) - (("MOVUPS") (:|xmm1/mem128| :|xmm2|) (#xF #x11 :|/r|)) - (("MOVUPS") (:|xmm1| :|xmm2/mem128|) (#xF #x10 :|/r|)) - (("MOVUPD") (:|xmm1/mem128| :|xmm2|) (#x66 #xF #x11 :|/r|)) - (("MOVUPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #x10 :|/r|)) - (("MOVZX") (:|reg32| :|r/m16|) (:|o32| #xF #xB7 :|/r|)) - (("MOVZX") (:|reg32| :|r/m8|) (:|o32| #xF #xB6 :|/r|)) - (("MOVZX") (:|reg16| :|r/m8|) (:|o16| #xF #xB6 :|/r|)) - (("MOVSX") (:|reg32| :|r/m16|) (:|o32| #xF #xBF :|/r|)) - (("MOVSX") (:|reg32| :|r/m8|) (:|o32| #xF #xBE :|/r|)) - (("MOVSX") (:|reg16| :|r/m8|) (:|o16| #xF #xBE :|/r|)) - (("MOVSS") (:|xmm1/m32| :|xmm2|) (#xF3 #xF #x11 :|/r|)) - (("MOVSS") (:|xmm1| :|xmm2/m32|) (#xF3 #xF #x10 :|/r|)) - (("MOVSD") (:|xmm1/m64| :|xmm2|) (#xF2 #xF #x11 :|/r|)) - (("MOVSD") (:|xmm1| :|xmm2/m64|) (#xF2 #xF #x10 :|/r|)) - (("MOVSD") (:|none|) (:|o32| #xA5)) - (("MOVSW") (:|none|) (:|o16| #xA5)) - (("MOVSB") (:|none|) (#xA4)) - (("MOVQ2DQ") (:|xmm| :|mm|) (#xF3 :OF #xD6 :|/r|)) - (("MOVQ") (:|xmm1/m64| :|xmm2|) (#x66 #xF #xD6 :|/r|)) - (("MOVQ") (:|xmm1| :|xmm2/m64|) (#xF3 #xF #x7E :|/r|)) - (("MOVQ") (:|mm1/m64| :|mm2|) (#xF #x7F :|/r|)) - (("MOVQ") (:|mm1| :|mm2/m64|) (#xF #x6F :|/r|)) - (("MOVNTQ") (:|m64| :|mm|) (#xF #xE7 :|/r|)) - (("MOVNTPS") (:|m128| :|xmm|) (#xF #x2B :|/r|)) - (("MOVNTPD") (:|m128| :|xmm|) (#x66 #xF #x2B :|/r|)) - (("MOVNTI") (:|m32| :|reg32|) (#xF #xC3 :|/r|)) - (("MOVNTDQ") (:|m128| :|xmm|) (#x66 #xF #xE7 :|/r|)) - (("MOVMSKPS") (:|reg32| :|xmm|) (#xF #x50 :|/r|)) - (("MOVMSKPD") (:|reg32| :|xmm|) (#x66 #xF #x50 :|/r|)) - (("MOVLPS") (:|m64| :|xmm|) (:OF #x13 :|/r|)) - (("MOVLPS") (:|xmm| :|m64|) (:OF #x12 :|/r|)) - (("MOVLPD") (:|m64| :|xmm|) (#x66 :OF #x13 :|/r|)) - (("MOVLPD") (:|xmm| :|m64|) (#x66 :OF #x12 :|/r|)) - (("MOVLHPS") (:|xmm1| :|xmm2|) (:OF #x16 :|/r|)) - (("MOVHPS") (:|m64| :|xmm|) (#xF #x17 :|/r|)) - (("MOVHPS") (:|xmm| :|m64|) (#xF #x16 :|/r|)) - (("MOVHPD") (:|m64| :|xmm|) (#x66 :OF #x17 :|/r|)) - (("MOVHPD") (:|xmm| :|m64|) (#x66 :OF #x16 :|/r|)) - (("MOVHLPS") (:|xmm1| :|xmm2|) (:OF #x12 :|/r|)) - (("MOVDQU") (:|xmm1/m128| :|xmm2|) (#xF3 :OF #x7F :|/r|)) - (("MOVDQU") (:|xmm1| :|xmm2/m128|) (#xF3 :OF #x6F :|/r|)) - (("MOVDQA") (:|xmm1/m128| :|xmm2|) (#x66 :OF #x7F :|/r|)) - (("MOVDQA") (:|xmm1| :|xmm2/m128|) (#x66 :OF #x6F :|/r|)) - (("MOVDQ2Q") (:|mm| :|xmm|) (#xF2 :OF #xD6 :|/r|)) - (("MOVD") (:|r/m32| :|xmm|) (#x66 #xF #x7E :|/r|)) - (("MOVD") (:|xmm| :|r/m32|) (#x66 #xF #x6E :|/r|)) - (("MOVD") (:|r/m32| :|mm|) (#xF #x7E :|/r|)) - (("MOVD") (:|mm| :|r/m32|) (#xF #x6E :|/r|)) - (("MOVAPS") (:|xmm1/mem128| :|xmm2|) (#xF #x29 :|/r|)) - (("MOVAPS") (:|xmm1| :|xmm2/mem128|) (#xF #x28 :|/r|)) - (("MOVAPD") (:|xmm1/mem128| :|xmm2|) (#x66 #xF #x29 :|/r|)) - (("MOVAPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #x28 :|/r|)) - (("MOV") (:TR3/4/5/6/7 :|reg32|) (#xF #x26 :|/r|)) - (("MOV") (:DR0/1/2/3/6/7 :|reg32|) (#xF #x23 :|/r|)) - (("MOV") (:CR0/2/3/4 :|reg32|) (#xF #x22 :|/r|)) - (("MOV") (:|reg32| :TR3/4/5/6/7) (#xF #x24 :|/r|)) - (("MOV") (:|reg32| :DR0/1/2/3/6/7) (#xF #x21 :|/r|)) - (("MOV") (:|reg32| :CR0/2/3/4) (#xF #x20 :|/r|)) - (("MOV") (:|segreg| :|r/m32|) (:|o32| #x8E :|/r|)) - (("MOV") (:|segreg| :|r/m16|) (:|o16| #x8E :|/r|)) - (("MOV") (:|r/m32| :|segreg|) (:|o32| #x8C :|/r|)) - (("MOV") (:|r/m16| :|segreg|) (:|o16| #x8C :|/r|)) - (("MOV") (:|memoffs32| :|EAX|) (:|o32| #xA3 :|ow/od|)) - (("MOV") (:|memoffs16| :AX) (:|o16| #xA3 :|ow/od|)) - (("MOV") (:|memoffs8| :AL) (#xA2 :|ow/od|)) - (("MOV") (:|EAX| :|memoffs32|) (:|o32| #xA1 :|ow/od|)) - (("MOV") (:AX :|memoffs16|) (:|o16| #xA1 :|ow/od|)) - (("MOV") (:AL :|memoffs8|) (#xA0 :|ow/od|)) - (("MOV") (:|r/m32| :|imm32|) (:|o32| #xC7 :/0 :|id|)) - (("MOV") (:|r/m16| :|imm16|) (:|o16| #xC7 :/0 :|iw|)) - (("MOV") (:|r/m8| :|imm8|) (#xC6 :/0 :|ib|)) - (("MOV") (:|reg32| :|imm32|) (:|o32| #xB8 :|+r| :|id|)) - (("MOV") (:|reg16| :|imm16|) (:|o16| #xB8 :|+r| :|iw|)) - (("MOV") (:|reg8| :|imm8|) (#xB0 :|+r| :|ib|)) - (("MOV") (:|reg32| :|r/m32|) (:|o32| #x8B :|/r|)) - (("MOV") (:|reg16| :|r/m16|) (:|o16| #x8B :|/r|)) - (("MOV") (:|reg8| :|r/m8|) (#x8A :|/r|)) - (("MOV") (:|r/m32| :|reg32|) (:|o32| #x89 :|/r|)) - (("MOV") (:|r/m16| :|reg16|) (:|o16| #x89 :|/r|)) - (("MOV") (:|r/m8| :|reg8|) (#x88 :|/r|)) - (("MINSS") (:|xmm1| :|xmm2/m32|) (#xF3 #xF #x5D :|/r|)) - (("MINSD") (:|xmm1| :|xmm2/m64|) (#xF2 #xF #x5D :|/r|)) - (("MINPS") (:|xmm1| :|xmm2/m128|) (#xF #x5D :|/r|)) - (("MINPD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x5D :|/r|)) - (("MFENCE") (:|none|) (#xF #xAE :/6)) - (("MAXSS") (:|xmm1| :|xmm2/m32|) (#xF3 #xF #x5F :|/r|)) - (("MAXSD") (:|xmm1| :|xmm2/m64|) (#xF2 #xF #x5F :|/r|)) - (("MAXPS") (:|xmm1| :|xmm2/m128|) (#xF #x5F :|/r|)) - (("MAXPD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x5F :|/r|)) - (("MASKMOVQ") (:|mm1| :|mm2|) (#xF #xF7 :|/r|)) - (("MASKMOVDQU") (:|xmm1| :|xmm2|) (#x66 #xF #xF7 :|/r|)) - (("LTR") (:|r/m16|) (#xF #x0 :/3)) - (("LSL") (:|reg32| :|r/m32|) (:|o32| #xF #x3 :|/r|)) - (("LSL") (:|reg16| :|r/m16|) (:|o16| #xF #x3 :|/r|)) - (("LOOPNZ") (:|imm| :|ECX|) (#xA32 #xE0 :|rb|)) - (("LOOPNZ") (:|imm| :CX) (#xA16 #xE0 :|rb|)) - (("LOOPNZ") (:|imm|) (#xE0 :|rb|)) - (("LOOPNE") (:|imm| :|ECX|) (#xA32 #xE0 :|rb|)) - (("LOOPNE") (:|imm| :CX) (#xA16 #xE0 :|rb|)) - (("LOOPNE") (:|imm|) (#xE0 :|rb|)) - (("LOOPZ") (:|imm| :|ECX|) (#xA32 #xE1 :|rb|)) - (("LOOPZ") (:|imm| :CX) (#xA16 #xE1 :|rb|)) - (("LOOPZ") (:|imm|) (#xE1 :|rb|)) - (("LOOPE") (:|imm| :|ECX|) (#xA32 #xE1 :|rb|)) - (("LOOPE") (:|imm| :CX) (#xA16 #xE1 :|rb|)) - (("LOOPE") (:|imm|) (#xE1 :|rb|)) - (("LOOP") (:|imm| :|ECX|) (#xA32 #xE2 :|rb|)) - (("LOOP") (:|imm| :CX) (#xA16 #xE2 :|rb|)) - (("LOOP") (:|imm|) (#xE2 :|rb|)) - (("LODSD") (:|none|) (:|o32| #xAD)) - (("LODSW") (:|none|) (:|o16| #xAD)) - (("LODSB") (:|none|) (#xAC)) - (("LOADALL286") (:|none|) (#xF #x5)) - (("LOADALL") (:|none|) (#xF #x7)) - (("LMSW") (:|r/m16|) (#xF #x1 :/6)) - (("LLDT") (:|r/m16|) (#xF #x0 :/2)) - (("LIDT") (:|mem|) (#xF #x1 :/3)) - (("LGDT") (:|mem|) (#xF #x1 :/2)) - (("LFENCE") (:|none|) (#xF #xAE :/5)) - (("LEAVE") (:|none|) (#xC9)) - (("LEA") (:|reg32| :|mem|) (:|o32| #x8D :|/r|)) - (("LEA") (:|reg16| :|mem|) (:|o16| #x8D :|/r|)) - (("LSS") (:|reg32| :|mem|) (:|o32| #xF #xB2 :|/r|)) - (("LSS") (:|reg16| :|mem|) (:|o16| #xF #xB2 :|/r|)) - (("LGS") (:|reg32| :|mem|) (:|o32| #xF #xB5 :|/r|)) - (("LGS") (:|reg16| :|mem|) (:|o16| #xF #xB5 :|/r|)) - (("LFS") (:|reg32| :|mem|) (:|o32| #xF #xB4 :|/r|)) - (("LFS") (:|reg16| :|mem|) (:|o16| #xF #xB4 :|/r|)) - (("LES") (:|reg32| :|mem|) (:|o32| #xC4 :|/r|)) - (("LES") (:|reg16| :|mem|) (:|o16| #xC4 :|/r|)) - (("LDS") (:|reg32| :|mem|) (:|o32| #xC5 :|/r|)) - (("LDS") (:|reg16| :|mem|) (:|o16| #xC5 :|/r|)) - (("LDMXCSR") (:|mem32|) (#xF #xAE :/2)) - (("LAR") (:|reg32| :|r/m32|) (:|o32| #xF #x2 :|/r|)) - (("LAR") (:|reg16| :|r/m16|) (:|o16| #xF #x2 :|/r|)) - (("LAHF") (:|none|) (#x9F)) - (("JMP") (:|r/m32|) (:|o32| #xFF :/4)) - (("JMP") (:|r/m16|) (:|o16| #xFF :/4)) - (("JMP" "FAR") (:|mem32|) (:|o32| #xFF :/5)) - (("JMP" "FAR") (:|mem|) (:|o16| #xFF :/5)) - (("JMP") (:|imm:imm32|) (:|o32| #xEA :|id| :|iw|)) - (("JMP") (:|imm:imm16|) (:|o16| #xEA :|iw| :|iw|)) - (("JMP" "SHORT") (:|imm|) (#xEB :|rb|)) - (("JMP") (:|imm|) (#xE9 :|rw/rd|)) - (("JECXZ") (:|imm|) (#xA32 #xE3 :|rb|)) - (("JCXZ") (:|imm|) (#xA16 #xE3 :|rb|)) -;; (("Jcc" "NEAR") (:|imm|) (#xF #x80 :|+cc| :|rw/rd|)) -;; (("Jcc") (:|imm|) (#x70 :|+cc| :|rb|)) - (("IRETD") (:|none|) (:|o32| #xCF)) - (("IRETW") (:|none|) (:|o16| #xCF)) - (("IRET") (:|none|) (#xCF)) - (("INVLPG") (:|mem|) (#xF #x1 :/7)) - (("INVD") (:|none|) (#xF #x8)) - (("INTO") (:|none|) (#xCE)) - (("INT03") (:|none|) (#xCC)) - (("INT3") (:|none|) (#xCC)) - (("INT01") (:|none|) (#xF1)) - (("ICEBP") (:|none|) (#xF1)) - (("INT1") (:|none|) (#xF1)) - (("INT") (:|imm8|) (#xCD :|ib|)) - (("INSD") (:|none|) (:|o32| #x6D)) - (("INSW") (:|none|) (:|o16| #x6D)) - (("INSB") (:|none|) (#x6C)) - (("INC") (:|r/m32|) (:|o32| #xFF :/0)) - (("INC") (:|r/m16|) (:|o16| #xFF :/0)) - (("INC") (:|r/m8|) (#xFE :/0)) - (("INC") (:|reg32|) (:|o32| #x40 :|+r|)) - (("INC") (:|reg16|) (:|o16| #x40 :|+r|)) - (("IN") (:|EAX| :DX) (:|o32| #xED)) - (("IN") (:AX :DX) (:|o16| #xED)) - (("IN") (:AL :DX) (#xEC)) - (("IN") (:|EAX| :|imm8|) (:|o32| #xE5 :|ib|)) - (("IN") (:AX :|imm8|) (:|o16| #xE5 :|ib|)) - (("IN") (:AL :|imm8|) (#xE4 :|ib|)) - (("IMUL") (:|reg32| :|r/m32| :|imm32|) (:|o32| #x69 :|/r| :|id|)) - (("IMUL") (:|reg32| :|r/m32| :|imm8|) (:|o32| #x6B :|/r| :|ib|)) - (("IMUL") (:|reg16| :|r/m16| :|imm16|) (:|o16| #x69 :|/r| :|iw|)) - (("IMUL") (:|reg16| :|r/m16| :|imm8|) (:|o16| #x6B :|/r| :|ib|)) - (("IMUL") (:|reg32| :|imm32|) (:|o32| #x69 :|/r| :|id|)) - (("IMUL") (:|reg32| :|imm8|) (:|o32| #x6B :|/r| :|ib|)) - (("IMUL") (:|reg16| :|imm16|) (:|o16| #x69 :|/r| :|iw|)) - (("IMUL") (:|reg16| :|imm8|) (:|o16| #x6B :|/r| :|ib|)) - (("IMUL") (:|reg32| :|r/m32|) (:|o32| #xF #xAF :|/r|)) - (("IMUL") (:|reg16| :|r/m16|) (:|o16| #xF #xAF :|/r|)) - (("IMUL") (:|r/m32|) (:|o32| #xF7 :/5)) - (("IMUL") (:|r/m16|) (:|o16| #xF7 :/5)) - (("IMUL") (:|r/m8|) (#xF6 :/5)) - (("IDIV") (:|r/m32|) (:|o32| #xF7 :/7)) - (("IDIV") (:|r/m16|) (:|o16| #xF7 :/7)) - (("IDIV") (:|r/m8|) (#xF6 :/7)) - (("IBTS") (:|r/m32| :|reg32|) (:|o32| #xF #xA7 :|/r|)) - (("IBTS") (:|r/m16| :|reg16|) (:|o16| #xF #xA7 :|/r|)) - (("HLT") (:|none|) (#xF4)) - (("FYL2XP1") (:|none|) (#xD9 #xF9)) - (("FYL2X") (:|none|) (#xD9 #xF1)) - (("FXTRACT") (:|none|) (#xD9 #xF4)) - (("FXSAVE") (:|memory|) (#xF #xAE :/0)) - (("FXRSTOR") (:|memory|) (#xF #xAE :/1)) - (("FXCH") (:ST0 :|fpureg|) (#xD9 #xC8 :|+r|)) - (("FXCH") (:|fpureg| :ST0) (#xD9 #xC8 :|+r|)) - (("FXCH") (:|fpureg|) (#xD9 #xC8 :|+r|)) - (("FXCH") (:|none|) (#xD9 #xC9)) - (("FXAM") (:|none|) (#xD9 #xE5)) - (("FUCOMIP") (:ST0 :|fpureg|) (#xDF #xE8 :|+r|)) - (("FUCOMIP") (:|fpureg|) (#xDF #xE8 :|+r|)) - (("FUCOMI") (:ST0 :|fpureg|) (#xDB #xE8 :|+r|)) - (("FUCOMI") (:|fpureg|) (#xDB #xE8 :|+r|)) - (("FUCOMPP") (:|none|) (#xDA #xE9)) - (("FUCOMP") (:ST0 :|fpureg|) (#xDD #xE8 :|+r|)) - (("FUCOMP") (:|fpureg|) (#xDD #xE8 :|+r|)) - (("FUCOM") (:ST0 :|fpureg|) (#xDD #xE0 :|+r|)) - (("FUCOM") (:|fpureg|) (#xDD #xE0 :|+r|)) - (("FTST") (:|none|) (#xD9 #xE4)) - (("FSUBRP") (:|fpureg| :ST0) (#xDE #xE0 :|+r|)) - (("FSUBRP") (:|fpureg|) (#xDE #xE0 :|+r|)) - (("FSUBP") (:|fpureg| :ST0) (#xDE #xE8 :|+r|)) - (("FSUBP") (:|fpureg|) (#xDE #xE8 :|+r|)) - (("FSUBR") (:|fpureg| :ST0) (#xDC #xE0 :|+r|)) - (("FSUBR" "TO") (:|fpureg|) (#xDC #xE0 :|+r|)) - (("FSUBR") (:ST0 :|fpureg|) (#xD8 #xE8 :|+r|)) - (("FSUBR") (:|fpureg|) (#xD8 #xE8 :|+r|)) - (("FSUBR") (:|mem64|) (#xDC :/5)) - (("FSUBR") (:|mem32|) (#xD8 :/5)) - (("FSUB") (:|fpureg| :ST0) (#xDC #xE8 :|+r|)) - (("FSUB" "TO") (:|fpureg|) (#xDC #xE8 :|+r|)) - (("FSUB") (:ST0 :|fpureg|) (#xD8 #xE0 :|+r|)) - (("FSUB") (:|fpureg|) (#xD8 #xE0 :|+r|)) - (("FSUB") (:|mem64|) (#xDC :/4)) - (("FSUB") (:|mem32|) (#xD8 :/4)) - (("FNSTSW") (:AX) (#xDF #xE0)) - (("FNSTSW") (:|mem16|) (#xDD :/7)) - (("FSTSW") (:AX) (#x9B #xDF #xE0)) - (("FSTSW") (:|mem16|) (#x9B #xDD :/7)) - (("FNSTENV") (:|mem|) (#xD9 :/6)) - (("FSTENV") (:|mem|) (#x9B #xD9 :/6)) - (("FNSTCW") (:|mem16|) (#xD9 :/7)) - (("FSTCW") (:|mem16|) (#x9B #xD9 :/7)) - (("FSTP") (:|fpureg|) (#xDD #xD8 :|+r|)) - (("FSTP") (:|mem80|) (#xDB :/7)) - (("FSTP") (:|mem64|) (#xDD :/3)) - (("FSTP") (:|mem32|) (#xD9 :/3)) - (("FST") (:|fpureg|) (#xDD #xD0 :|+r|)) - (("FST") (:|mem64|) (#xDD :/2)) - (("FST") (:|mem32|) (#xD9 :/2)) - (("FSQRT") (:|none|) (#xD9 #xFA)) - (("FSINCOS") (:|none|) (#xD9 #xFB)) - (("FSIN") (:|none|) (#xD9 #xFE)) - (("FSETPM") (:|none|) (#xDB #xE4)) - (("FSCALE") (:|none|) (#xD9 #xFD)) - (("FRSTOR") (:|mem|) (#xDD :/4)) - (("FNSAVE") (:|mem|) (#xDD :/6)) - (("FSAVE") (:|mem|) (#x9B #xDD :/6)) - (("FRNDINT") (:|none|) (#xD9 #xFC)) - (("FPREM1") (:|none|) (#xD9 #xF5)) - (("FPREM") (:|none|) (#xD9 #xF8)) - (("FPTAN") (:|none|) (#xD9 #xF2)) - (("FPATAN") (:|none|) (#xD9 #xF3)) - (("FNOP") (:|none|) (#xD9 #xD0)) - (("FMULP") (:|fpureg| :ST0) (#xDE #xC8 :|+r|)) - (("FMULP") (:|fpureg|) (#xDE #xC8 :|+r|)) - (("FMUL") (:|fpureg| :ST0) (#xDC #xC8 :|+r|)) - (("FMUL" "TO") (:|fpureg|) (#xDC #xC8 :|+r|)) - (("FMUL") (:ST0 :|fpureg|) (#xD8 #xC8 :|+r|)) - (("FMUL") (:|fpureg|) (#xD8 #xC8 :|+r|)) - (("FMUL") (:|mem64|) (#xDC :/1)) - (("FMUL") (:|mem32|) (#xD8 :/1)) - (("FLDENV") (:|mem|) (#xD9 :/4)) - (("FLDCW") (:|mem16|) (#xD9 :/5)) - (("FLDZ") (:|none|) (#xD9 #xEE)) - (("FLDPI") (:|none|) (#xD9 #xEB)) - (("FLDLN2") (:|none|) (#xD9 #xED)) - (("FLDLG2") (:|none|) (#xD9 #xEC)) - (("FLDL2T") (:|none|) (#xD9 #xE9)) - (("FLDL2E") (:|none|) (#xD9 #xEA)) - (("FLD1") (:|none|) (#xD9 #xE8)) - (("FLD") (:|fpureg|) (#xD9 #xC0 :|+r|)) - (("FLD") (:|mem80|) (#xDB :/5)) - (("FLD") (:|mem64|) (#xDD :/0)) - (("FLD") (:|mem32|) (#xD9 :/0)) - (("FISUBR") (:|mem32|) (#xDA :/5)) - (("FISUBR") (:|mem16|) (#xDE :/5)) - (("FISUB") (:|mem32|) (#xDA :/4)) - (("FISUB") (:|mem16|) (#xDE :/4)) - (("FNINIT") (:|none|) (#xDB #xE3)) - (("FINIT") (:|none|) (#x9B #xDB #xE3)) - (("FINCSTP") (:|none|) (#xD9 #xF7)) - (("FIMUL") (:|mem32|) (#xDA :/1)) - (("FIMUL") (:|mem16|) (#xDE :/1)) - (("FISTP") (:|mem64|) (#xDF :/7)) - (("FISTP") (:|mem32|) (#xDB :/3)) - (("FISTP") (:|mem16|) (#xDF :/3)) - (("FIST") (:|mem32|) (#xDB :/2)) - (("FIST") (:|mem16|) (#xDF :/2)) - (("FILD") (:|mem64|) (#xDF :/5)) - (("FILD") (:|mem32|) (#xDB :/0)) - (("FILD") (:|mem16|) (#xDF :/0)) - (("FIDIVR") (:|mem32|) (#xDA :/7)) - (("FIDIVR") (:|mem16|) (#xDE :/7)) - (("FIDIV") (:|mem32|) (#xDA :/6)) - (("FIDIV") (:|mem16|) (#xDE :/6)) - (("FICOMP") (:|mem32|) (#xDA :/3)) - (("FICOMP") (:|mem16|) (#xDE :/3)) - (("FICOM") (:|mem32|) (#xDA :/2)) - (("FICOM") (:|mem16|) (#xDE :/2)) - (("FIADD") (:|mem32|) (#xDA :/0)) - (("FIADD") (:|mem16|) (#xDE :/0)) - (("FFREEP") (:|fpureg|) (#xDF #xC0 :|+r|)) - (("FFREE") (:|fpureg|) (#xDD #xC0 :|+r|)) - (("FEMMS") (:|none|) (#xF #xE)) - (("FDIVRP") (:|fpureg| :ST0) (#xDE #xF0 :|+r|)) - (("FDIVRP") (:|fpureg|) (#xDE #xF0 :|+r|)) - (("FDIVP") (:|fpureg| :ST0) (#xDE #xF8 :|+r|)) - (("FDIVP") (:|fpureg|) (#xDE #xF8 :|+r|)) - (("FDIVR") (:|fpureg| :ST0) (#xDC #xF0 :|+r|)) - (("FDIVR" "TO") (:|fpureg|) (#xDC #xF0 :|+r|)) - (("FDIVR") (:ST0 :|fpureg|) (#xD8 #xF8 :|+r|)) - (("FDIVR") (:|fpureg|) (#xD8 #xF8 :|+r|)) - (("FDIVR") (:|mem64|) (#xDC :/0)) - (("FDIVR") (:|mem32|) (#xD8 :/0)) - (("FDIV") (:|fpureg| :ST0) (#xDC #xF8 :|+r|)) - (("FDIV" "TO") (:|fpureg|) (#xDC #xF8 :|+r|)) - (("FDIV") (:ST0 :|fpureg|) (#xD8 #xF0 :|+r|)) - (("FDIV") (:|fpureg|) (#xD8 #xF0 :|+r|)) - (("FDIV") (:|mem64|) (#xDC :/6)) - (("FDIV") (:|mem32|) (#xD8 :/6)) - (("FNENI") (:|none|) (#xDB #xE0)) - (("FENI") (:|none|) (#x9B #xDB #xE0)) - (("FNDISI") (:|none|) (#xDB #xE1)) - (("FDISI") (:|none|) (#x9B #xDB #xE1)) - (("FDECSTP") (:|none|) (#xD9 #xF6)) - (("FCOS") (:|none|) (#xD9 #xFF)) - (("FCOMIP") (:ST0 :|fpureg|) (#xDF #xF0 :|+r|)) - (("FCOMIP") (:|fpureg|) (#xDF #xF0 :|+r|)) - (("FCOMI") (:ST0 :|fpureg|) (#xDB #xF0 :|+r|)) - (("FCOMI") (:|fpureg|) (#xDB #xF0 :|+r|)) - (("FCOMPP") (:|none|) (#xDE #xD9)) - (("FCOMP") (:ST0 :|fpureg|) (#xD8 #xD8 :|+r|)) - (("FCOMP") (:|fpureg|) (#xD8 #xD8 :|+r|)) - (("FCOMP") (:|mem64|) (#xDC :/3)) - (("FCOMP") (:|mem32|) (#xD8 :/3)) - (("FCOM") (:ST0 :|fpureg|) (#xD8 #xD0 :|+r|)) - (("FCOM") (:|fpureg|) (#xD8 #xD0 :|+r|)) - (("FCOM") (:|mem64|) (#xDC :/2)) - (("FCOM") (:|mem32|) (#xD8 :/2)) - (("FCMOVNU") (:ST0 :|fpureg|) (#xDB #xD8 :|+r|)) - (("FCMOVNU") (:|fpureg|) (#xDB #xD8 :|+r|)) - (("FCMOVNBE") (:ST0 :|fpureg|) (#xDB #xD0 :|+r|)) - (("FCMOVNBE") (:|fpureg|) (#xDB #xD0 :|+r|)) - (("FCMOVNE") (:ST0 :|fpureg|) (#xDB #xC8 :|+r|)) - (("FCMOVNE") (:|fpureg|) (#xDB #xC8 :|+r|)) - (("FCMOVNB") (:ST0 :|fpureg|) (#xDB #xC0 :|+r|)) - (("FCMOVNB") (:|fpureg|) (#xDB #xC0 :|+r|)) - (("FCMOVU") (:ST0 :|fpureg|) (#xDA #xD8 :|+r|)) - (("FCMOVU") (:|fpureg|) (#xDA #xD8 :|+r|)) - (("FCMOVBE") (:ST0 :|fpureg|) (#xDA #xD0 :|+r|)) - (("FCMOVBE") (:|fpureg|) (#xDA #xD0 :|+r|)) - (("FCMOVE") (:ST0 :|fpureg|) (#xDA #xC8 :|+r|)) - (("FCMOVE") (:|fpureg|) (#xDA #xC8 :|+r|)) - (("FCMOVB") (:ST0 :|fpureg|) (#xDA #xC0 :|+r|)) - (("FCMOVB") (:|fpureg|) (#xDA #xC0 :|+r|)) - (("FNCLEX") (:|none|) (#xDB #xE2)) - (("FCLEX") (:|none|) (#x9B #xDB #xE2)) - (("FCHS") (:|none|) (#xD9 #xE0)) - (("FBSTP") (:|mem80|) (#xDF :/6)) - (("FBLD") (:|mem80|) (#xDF :/4)) - (("FADDP") (:|fpureg| :ST0) (#xDE #xC0 :|+r|)) - (("FADDP") (:|fpureg|) (#xDE #xC0 :|+r|)) - (("FADD") (:|fpureg| :ST0) (#xDC #xC0 :|+r|)) - (("FADD" "TO") (:|fpureg|) (#xDC #xC0 :|+r|)) - (("FADD") (:ST0 :|fpureg|) (#xD8 #xC0 :|+r|)) - (("FADD") (:|fpureg|) (#xD8 #xC0 :|+r|)) - (("FADD") (:|mem64|) (#xDC :/0)) - (("FADD") (:|mem32|) (#xD8 :/0)) - (("FABS") (:|none|) (#xD9 #xE1)) - (("F2XM1") (:|none|) (#xD9 #xF0)) - (("ENTER") (:|imm| :|imm|) (#xC8 :|iw| :|ib|)) - (("EMMS") (:|none|) (#xF #x77)) - (("DIVSS") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #x5E :|/r|)) - (("DIVSD") (:|xmm1| :|xmm2/mem64|) (#xF2 #xF #x5E :|/r|)) - (("DIVPS") (:|xmm1| :|xmm2/mem128|) (#xF #x5E :|/r|)) - (("DIVPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #x5E :|/r|)) - (("DIV") (:|r/m32|) (:|o32| #xF7 :/6)) - (("DIV") (:|r/m16|) (:|o16| #xF7 :/6)) - (("DIV") (:|r/m8|) (#xF6 :/6)) - (("DEC") (:|r/m32|) (:|o32| #xFF :/1)) - (("DEC") (:|r/m16|) (:|o16| #xFF :/1)) - (("DEC") (:|r/m8|) (#xFE :/1)) - (("DEC") (:|reg32|) (:|o32| #x48 :|+r|)) - (("DEC") (:|reg16|) (:|o16| #x48 :|+r|)) - (("DAS") (:|none|) (#x2F)) - (("DAA") (:|none|) (#x27)) - (("CVTTSD2SI") (:|reg32| :|xmm/mem32|) (#xF3 #xF #x2C :|/r|)) - (("CVTTSD2SI") (:|reg32| :|xmm/mem64|) (#xF2 #xF #x2C :|/r|)) - (("CVTTPS2PI") (:|mm| :|xmm/mem64|) (#xF #x2C :|/r|)) - (("CVTTPS2DQ") (:|xmm1| :|xmm2/mem128|) (#xF3 #xF #x5B :|/r|)) - (("CVTTPD2PI") (:|mm| :|xmm/mem128|) (#x66 #xF #x2C :|/r|)) - (("CVTTPD2DQ") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #xE6 :|/r|)) - (("CVTSS2SI") (:|reg32| :|xmm/mem32|) (#xF3 #xF #x2D :|/r|)) - (("CVTSS2SD") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #x5A :|/r|)) - (("CVTSI2SS") (:|xmm| :|r/m32|) (#xF3 #xF #x2A :|/r|)) - (("CVTSI2SD") (:|xmm| :|r/m32|) (#xF2 #xF #x2A :|/r|)) - (("CVTSD2SS") (:|xmm1| :|xmm2/mem64|) (#xF2 #xF #x5A :|/r|)) - (("CVTSD2SI") (:|reg32| :|xmm/mem64|) (#xF2 #xF #x2D :|/r|)) - (("CVTPS2PI") (:|mm| :|xmm/mem64|) (#xF #x2D :|/r|)) - (("CVTPS2PD") (:|xmm1| :|xmm2/mem64|) (#xF #x5A :|/r|)) - (("CVTPS2DQ") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #x5B :|/r|)) - (("CVTPI2PS") (:|xmm| :|mm/mem64|) (#xF #x2A :|/r|)) - (("CVTPI2PD") (:|xmm| :|mm/mem64|) (#x66 #xF #x2A :|/r|)) - (("CVTPD2PS") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #x5A :|/r|)) - (("CVTPD2PI") (:|mm| :|xmm/mem128|) (#x66 #xF #x2D :|/r|)) - (("CVTPD2DQ") (:|xmm1| :|xmm2/mem128|) (#xF2 #xF #xE6 :|/r|)) - (("CVTDQ2PS") (:|xmm1| :|xmm2/mem128|) (#xF #x5B :|/r|)) - (("CVTDQ2PD") (:|xmm1| :|xmm2/mem64|) (#xF3 #xF #xE6 :|/r|)) - (("CPUID") (:|none|) (#xF #xA2)) - (("COMISS") (:|xmm1| :|xmm2/mem32|) (#x66 #xF #x2F :|/r|)) - (("COMISD") (:|xmm1| :|xmm2/mem64|) (#x66 #xF #x2F :|/r|)) - (("CMPXCHG8B") (:|mem|) (#xF #xC7 :/1)) - (("CMPXCHG486") (:|r/m32| :|reg32|) (:|o32| #xF #xA7 :|/r|)) - (("CMPXCHG486") (:|r/m16| :|reg16|) (:|o16| #xF #xA7 :|/r|)) - (("CMPXCHG486") (:|r/m8| :|reg8|) (#xF #xA6 :|/r|)) - (("CMPXCHG") (:|r/m32| :|reg32|) (:|o32| #xF #xB1 :|/r|)) - (("CMPXCHG") (:|r/m16| :|reg16|) (:|o16| #xF #xB1 :|/r|)) - (("CMPXCHG") (:|r/m8| :|reg8|) (#xF #xB0 :|/r|)) - (("CMPORDSS") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #xC2 :|/r| #x7)) - (("CMPNLESS") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #xC2 :|/r| #x6)) - (("CMPNLTSS") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #xC2 :|/r| #x5)) - (("CMPNEQSS") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #xC2 :|/r| #x4)) - (("CMPUNORDSS") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #xC2 :|/r| #x3)) - (("CMPLESS") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #xC2 :|/r| #x2)) - (("CMPLTSS") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #xC2 :|/r| #x1)) - (("CMPEQSS") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #xC2 :|/r| #x0)) - (("CMPSS") (:|xmm1| :|xmm2/mem32| :|imm8|) (#xF3 #xF #xC2 :|/r| :|ib|)) - (("CMPORDSD") (:|xmm1| :|xmm2/mem64|) (#xF2 #xF #xC2 :|/r| #x7)) - (("CMPNLESD") (:|xmm1| :|xmm2/mem64|) (#xF2 #xF #xC2 :|/r| #x6)) - (("CMPNLTSD") (:|xmm1| :|xmm2/mem64|) (#xF2 #xF #xC2 :|/r| #x5)) - (("CMPNEQSD") (:|xmm1| :|xmm2/mem64|) (#xF2 #xF #xC2 :|/r| #x4)) - (("CMPUNORDSD") (:|xmm1| :|xmm2/mem64|) (#xF2 #xF #xC2 :|/r| #x3)) - (("CMPLESD") (:|xmm1| :|xmm2/mem64|) (#xF2 #xF #xC2 :|/r| #x2)) - (("CMPLTSD") (:|xmm1| :|xmm2/mem64|) (#xF2 #xF #xC2 :|/r| #x1)) - (("CMPEQSD") (:|xmm1| :|xmm2/mem64|) (#xF2 #xF #xC2 :|/r| #x0)) - (("CMPSD") (:|xmm1| :|xmm2/mem64| :|imm8|) (#xF2 #xF #xC2 :|/r| :|ib|)) - (("CMPSD") (:|none|) (:|o32| #xA7)) - (("CMPSW") (:|none|) (:|o16| #xA7)) - (("CMPSB") (:|none|) (#xA6)) - (("CMPORDPS") (:|xmm1| :|xmm2/mem128|) (#xF #xC2 :|/r| #x7)) - (("CMPNLEPS") (:|xmm1| :|xmm2/mem128|) (#xF #xC2 :|/r| #x6)) - (("CMPNLTPS") (:|xmm1| :|xmm2/mem128|) (#xF #xC2 :|/r| #x5)) - (("CMPNEQPS") (:|xmm1| :|xmm2/mem128|) (#xF #xC2 :|/r| #x4)) - (("CMPUNORDPS") (:|xmm1| :|xmm2/mem128|) (#xF #xC2 :|/r| #x3)) - (("CMPLEPS") (:|xmm1| :|xmm2/mem128|) (#xF #xC2 :|/r| #x2)) - (("CMPLTPS") (:|xmm1| :|xmm2/mem128|) (#xF #xC2 :|/r| #x1)) - (("CMPEQPS") (:|xmm1| :|xmm2/mem128|) (#xF #xC2 :|/r| #x0)) - (("CMPPS") (:|xmm1| :|xmm2/mem128| :|imm8|) (#xF #xC2 :|/r| :|ib|)) - (("CMPORDPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #xC2 :|/r| #x7)) - (("CMPNLEPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #xC2 :|/r| #x6)) - (("CMPNLTPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #xC2 :|/r| #x5)) - (("CMPNEQPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #xC2 :|/r| #x4)) - (("CMPUNORDPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #xC2 :|/r| #x3)) - (("CMPLEPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #xC2 :|/r| #x2)) - (("CMPLTPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #xC2 :|/r| #x1)) - (("CMPEQPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #xC2 :|/r| #x0)) - (("CMPPD") (:|xmm1| :|xmm2/mem128| :|imm8|) (#x66 #xF #xC2 :|/r| :|ib|)) - (("CMP") (:|EAX| :|imm32|) (:|o32| #x3D :|id|)) - (("CMP") (:AX :|imm16|) (:|o16| #x3D :|iw|)) - (("CMP") (:AL :|imm8|) (#x3C :|ib|)) - (("CMP") (:|r/m32| :|imm8|) (:|o32| #x83 :/0 :|ib|)) - (("CMP") (:|r/m16| :|imm8|) (:|o16| #x83 :/0 :|ib|)) - (("CMP") (:|r/m32| :|imm32|) (:|o32| #x81 :/0 :|id|)) - (("CMP") (:|r/m16| :|imm16|) (:|o16| #x81 :/0 :|iw|)) - (("CMP") (:|r/m8| :|imm8|) (#x80 :/0 :|ib|)) - (("CMP") (:|reg32| :|r/m32|) (:|o32| #x3B :|/r|)) - (("CMP") (:|reg16| :|r/m16|) (:|o16| #x3B :|/r|)) - (("CMP") (:|reg8| :|r/m8|) (#x3A :|/r|)) - (("CMP") (:|r/m32| :|reg32|) (:|o32| #x39 :|/r|)) - (("CMP") (:|r/m16| :|reg16|) (:|o16| #x39 :|/r|)) - (("CMP") (:|r/m8| :|reg8|) (#x38 :|/r|)) -;; (("CMOVcc") (:|reg32| :|r/m32|) (:|o32| #xF #x40 :|+cc| :|/r|)) -;; (("CMOVcc") (:|reg16| :|r/m16|) (:|o16| #xF #x40 :|+cc| :|/r|)) - (("CMC") (:|none|) (#xF5)) - (("CLFLUSH") (:|mem|) (#xF #xAE :/7)) - (("CLTS") (:|none|) (#xF #x6)) - (("CLI") (:|none|) (#xFA)) - (("CLD") (:|none|) (#xFC)) - (("CLC") (:|none|) (#xF8)) - (("CDQ") (:|none|) (:|o32| #x99)) - (("CWD") (:|none|) (:|o16| #x99)) - (("CWDE") (:|none|) (:|o32| #x98)) - (("CBW") (:|none|) (:|o16| #x98)) - (("CALL") (:|r/m32|) (:|o32| #xFF :/2)) - (("CALL") (:|r/m16|) (:|o16| #xFF :/2)) - (("CALL" "FAR") (:|mem32|) (:|o32| #xFF :/3)) - (("CALL" "FAR") (:|mem16|) (:|o16| #xFF :/3)) - (("CALL") (:|imm:imm32|) (:|o32| #x9A :|id| :|iw|)) - (("CALL") (:|imm:imm16|) (:|o16| #x9A :|iw| :|iw|)) - (("CALL") (:|imm|) (#xE8 :|rw/rd|)) - (("BTS") (:|r/m32| :|imm|) (:|o32| #xF #xBA :/5 :|ib|)) - (("BTS") (:|r/m16| :|imm|) (:|o16| #xF #xBA :/5 :|ib|)) - (("BTS") (:|r/m32| :|reg32|) (:|o32| #xF #xAB :|/r|)) - (("BTS") (:|r/m16| :|reg16|) (:|o16| #xF #xAB :|/r|)) - (("BTR") (:|r/m32| :|imm8|) (:|o32| #xF #xBA :/6 :|ib|)) - (("BTR") (:|r/m16| :|imm8|) (:|o16| #xF #xBA :/6 :|ib|)) - (("BTR") (:|r/m32| :|reg32|) (:|o32| #xF #xB3 :|/r|)) - (("BTR") (:|r/m16| :|reg16|) (:|o16| #xF #xB3 :|/r|)) - (("BTC") (:|r/m32| :|imm8|) (:|o32| #xF #xBA :/7 :|ib|)) - (("BTC") (:|r/m16| :|imm8|) (:|o16| #xF #xBA :/7 :|ib|)) - (("BTC") (:|r/m32| :|reg32|) (:|o32| #xF #xBB :|/r|)) - (("BTC") (:|r/m16| :|reg16|) (:|o16| #xF #xBB :|/r|)) - (("BT") (:|r/m32| :|imm8|) (:|o32| #xF #xBA :/4 :|ib|)) - (("BT") (:|r/m16| :|imm8|) (:|o16| #xF #xBA :/4 :|ib|)) - (("BT") (:|r/m32| :|reg32|) (:|o32| #xF #xA3 :|/r|)) - (("BT") (:|r/m16| :|reg16|) (:|o16| #xF #xA3 :|/r|)) - (("BSWAP") (:|reg32|) (:|o32| #xF #xC8 :|+r|)) - (("BSR") (:|reg32| :|r/m32|) (:|o32| #xF #xBD :|/r|)) - (("BSR") (:|reg16| :|r/m16|) (:|o16| #xF #xBD :|/r|)) - (("BSF") (:|reg32| :|r/m32|) (:|o32| #xF #xBC :|/r|)) - (("BSF") (:|reg16| :|r/m16|) (:|o16| #xF #xBC :|/r|)) - (("BOUND") (:|reg32| :|mem|) (:|o32| #x62 :|/r|)) - (("BOUND") (:|reg16| :|mem|) (:|o16| #x62 :|/r|)) - (("ARPL") (:|r/m16| :|reg16|) (#x63 :|/r|)) - (("ANDPS") (:|xmm1| :|xmm2/mem128|) (#xF #x54 :|/r|)) - (("ANDPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #x54 :|/r|)) - (("ANDNPS") (:|xmm1| :|xmm2/mem128|) (#xF #x55 :|/r|)) - (("ANDNPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #x55 :|/r|)) - (("AND") (:|EAX| :|imm32|) (:|o32| #x25 :|id|)) - (("AND") (:AX :|imm16|) (:|o16| #x25 :|iw|)) - (("AND") (:AL :|imm8|) (#x24 :|ib|)) - (("AND") (:|r/m32| :|imm8|) (:|o32| #x83 :/4 :|ib|)) - (("AND") (:|r/m16| :|imm8|) (:|o16| #x83 :/4 :|ib|)) - (("AND") (:|r/m32| :|imm32|) (:|o32| #x81 :/4 :|id|)) - (("AND") (:|r/m16| :|imm16|) (:|o16| #x81 :/4 :|iw|)) - (("AND") (:|r/m8| :|imm8|) (#x80 :/4 :|ib|)) - (("AND") (:|reg32| :|r/m32|) (:|o32| #x23 :|/r|)) - (("AND") (:|reg16| :|r/m16|) (:|o16| #x23 :|/r|)) - (("AND") (:|reg8| :|r/m8|) (#x22 :|/r|)) - (("AND") (:|r/m32| :|reg32|) (:|o32| #x21 :|/r|)) - (("AND") (:|r/m16| :|reg16|) (:|o16| #x21 :|/r|)) - (("AND") (:|r/m8| :|reg8|) (#x20 :|/r|)) - (("ADDSS") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #x58 :|/r|)) - (("ADDSD") (:|xmm1| :|xmm2/mem64|) (#xF2 #xF #x58 :|/r|)) - (("ADDPS") (:|xmm1| :|xmm2/mem128|) (#xF #x58 :|/r|)) - (("ADDPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #x58 :|/r|)) - (("ADD") (:|EAX| :|imm32|) (:|o32| #x5 :|id|)) - (("ADD") (:AX :|imm16|) (:|o16| #x5 :|iw|)) - (("ADD") (:AL :|imm8|) (#x4 :|ib|)) - (("ADD") (:|r/m32| :|imm8|) (:|o32| #x83 :/0 :|ib|)) - (("ADD") (:|r/m16| :|imm8|) (:|o16| #x83 :/0 :|ib|)) - (("ADD") (:|r/m32| :|imm32|) (:|o32| #x81 :/0 :|id|)) - (("ADD") (:|r/m16| :|imm16|) (:|o16| #x81 :/0 :|iw|)) - (("ADD") (:|r/m8| :|imm8|) (#x80 :/0 :|ib|)) - (("ADD") (:|reg32| :|r/m32|) (:|o32| #x3 :|/r|)) - (("ADD") (:|reg16| :|r/m16|) (:|o16| #x3 :|/r|)) - (("ADD") (:|reg8| :|r/m8|) (#x2 :|/r|)) - (("ADD") (:|r/m32| :|reg32|) (:|o32| #x1 :|/r|)) - (("ADD") (:|r/m16| :|reg16|) (:|o16| #x1 :|/r|)) - (("ADD") (:|r/m8| :|reg8|) (#x0 :|/r|)) - (("ADC") (:|EAX| :|imm32|) (:|o32| #x15 :|id|)) - (("ADC") (:AX :|imm16|) (:|o16| #x15 :|iw|)) - (("ADC") (:AL :|imm8|) (#x14 :|ib|)) - (("ADC") (:|r/m32| :|imm8|) (:|o32| #x83 :/2 :|ib|)) - (("ADC") (:|r/m16| :|imm8|) (:|o16| #x83 :/2 :|ib|)) - (("ADC") (:|r/m32| :|imm32|) (:|o32| #x81 :/2 :|id|)) - (("ADC") (:|r/m16| :|imm16|) (:|o16| #x81 :/2 :|iw|)) - (("ADC") (:|r/m8| :|imm8|) (#x80 :/2 :|ib|)) - (("ADC") (:|reg32| :|r/m32|) (:|o32| #x13 :|/r|)) - (("ADC") (:|reg16| :|r/m16|) (:|o16| #x13 :|/r|)) - (("ADC") (:|reg8| :|r/m8|) (#x12 :|/r|)) - (("ADC") (:|r/m32| :|reg32|) (:|o32| #x11 :|/r|)) - (("ADC") (:|r/m16| :|reg16|) (:|o16| #x11 :|/r|)) - (("ADC") (:|r/m8| :|reg8|) (#x10 :|/r|)) - (("AAM") (:|imm|) (#xD4 :|ib|)) - (("AAM") (:|none|) (#xD4 #xA)) - (("AAD") (:|imm|) (#xD5 :|ib|)) - (("AAD") (:|none|) (#xD5 #xA)) - (("AAS") (:|none|) (#x3F)) - (("AAA") (:|none|) (#x37)) - (("J0 NEAR") (:|imm|) (#xF #x80 :|rw/rd|)) - (("JNO NEAR") (:|imm|) (#xF #x81 :|rw/rd|)) - (("JB NEAR") (:|imm|) (#xF #x82 :|rw/rd|)) - (("JC NEAR") (:|imm|) (#xF #x82 :|rw/rd|)) - (("JNAE NEAR") (:|imm|) (#xF #x82 :|rw/rd|)) - (("JAE NEAR") (:|imm|) (#xF #x83 :|rw/rd|)) - (("JNB NEAR") (:|imm|) (#xF #x83 :|rw/rd|)) - (("JNC NEAR") (:|imm|) (#xF #x83 :|rw/rd|)) - (("JE NEAR") (:|imm|) (#xF #x84 :|rw/rd|)) - (("JZ NEAR") (:|imm|) (#xF #x84 :|rw/rd|)) - (("JNE NEAR") (:|imm|) (#xF #x85 :|rw/rd|)) - (("JNZ NEAR") (:|imm|) (#xF #x85 :|rw/rd|)) - (("JBE NEAR") (:|imm|) (#xF #x86 :|rw/rd|)) - (("JNA NEAR") (:|imm|) (#xF #x86 :|rw/rd|)) - (("JA NEAR") (:|imm|) (#xF #x87 :|rw/rd|)) - (("JNBE NEAR") (:|imm|) (#xF #x87 :|rw/rd|)) - (("JS NEAR") (:|imm|) (#xF #x88 :|rw/rd|)) - (("JNS NEAR") (:|imm|) (#xF #x89 :|rw/rd|)) - (("JP NEAR") (:|imm|) (#xF #x8A :|rw/rd|)) - (("JPE NEAR") (:|imm|) (#xF #x8A :|rw/rd|)) - (("JNP NEAR") (:|imm|) (#xF #x8B :|rw/rd|)) - (("JPO NEAR") (:|imm|) (#xF #x8B :|rw/rd|)) - (("JL NEAR") (:|imm|) (#xF #x8C :|rw/rd|)) - (("JNGE NEAR") (:|imm|) (#xF #x8C :|rw/rd|)) - (("JGE NEAR") (:|imm|) (#xF #x8D :|rw/rd|)) - (("JNL NEAR") (:|imm|) (#xF #x8D :|rw/rd|)) - (("JLE NEAR") (:|imm|) (#xF #x8E :|rw/rd|)) - (("JNG NEAR") (:|imm|) (#xF #x8E :|rw/rd|)) - (("JG NEAR") (:|imm|) (#xF #x8F :|rw/rd|)) - (("JNLE NEAR") (:|imm|) (#xF #x8F :|rw/rd|)) - (("J0") (:|imm|) (#x70 :|rb|)) - (("JNO") (:|imm|) (#x71 :|rb|)) - (("JB") (:|imm|) (#x72 :|rb|)) - (("JC") (:|imm|) (#x72 :|rb|)) - (("JNAE") (:|imm|) (#x72 :|rb|)) - (("JAE") (:|imm|) (#x73 :|rb|)) - (("JNB") (:|imm|) (#x73 :|rb|)) - (("JNC") (:|imm|) (#x73 :|rb|)) - (("JE") (:|imm|) (#x74 :|rb|)) - (("JZ") (:|imm|) (#x74 :|rb|)) - (("JNE") (:|imm|) (#x75 :|rb|)) - (("JNZ") (:|imm|) (#x75 :|rb|)) - (("JBE") (:|imm|) (#x76 :|rb|)) - (("JNA") (:|imm|) (#x76 :|rb|)) - (("JA") (:|imm|) (#x77 :|rb|)) - (("JNBE") (:|imm|) (#x77 :|rb|)) - (("JS") (:|imm|) (#x78 :|rb|)) - (("JNS") (:|imm|) (#x79 :|rb|)) - (("JP") (:|imm|) (#x7A :|rb|)) - (("JPE") (:|imm|) (#x7A :|rb|)) - (("JNP") (:|imm|) (#x7B :|rb|)) - (("JPO") (:|imm|) (#x7B :|rb|)) - (("JL") (:|imm|) (#x7C :|rb|)) - (("JNGE") (:|imm|) (#x7C :|rb|)) - (("JGE") (:|imm|) (#x7D :|rb|)) - (("JNL") (:|imm|) (#x7D :|rb|)) - (("JLE") (:|imm|) (#x7E :|rb|)) - (("JNG") (:|imm|) (#x7E :|rb|)) - (("JG") (:|imm|) (#x7F :|rb|)) - (("JNLE") (:|imm|) (#x7F :|rb|)) - (("SET0") (:|r/m8|) (#xF #x90 :/2)) - (("SETNO") (:|r/m8|) (#xF #x91 :/2)) - (("SETB") (:|r/m8|) (#xF #x92 :/2)) - (("SETC") (:|r/m8|) (#xF #x92 :/2)) - (("SETNAE") (:|r/m8|) (#xF #x92 :/2)) - (("SETAE") (:|r/m8|) (#xF #x93 :/2)) - (("SETNB") (:|r/m8|) (#xF #x93 :/2)) - (("SETNC") (:|r/m8|) (#xF #x93 :/2)) - (("SETE") (:|r/m8|) (#xF #x94 :/2)) - (("SETZ") (:|r/m8|) (#xF #x94 :/2)) - (("SETNE") (:|r/m8|) (#xF #x95 :/2)) - (("SETNZ") (:|r/m8|) (#xF #x95 :/2)) - (("SETBE") (:|r/m8|) (#xF #x96 :/2)) - (("SETNA") (:|r/m8|) (#xF #x96 :/2)) - (("SETA") (:|r/m8|) (#xF #x97 :/2)) - (("SETNBE") (:|r/m8|) (#xF #x97 :/2)) - (("SETS") (:|r/m8|) (#xF #x98 :/2)) - (("SETNS") (:|r/m8|) (#xF #x99 :/2)) - (("SETP") (:|r/m8|) (#xF #x9A :/2)) - (("SETPE") (:|r/m8|) (#xF #x9A :/2)) - (("SETNP") (:|r/m8|) (#xF #x9B :/2)) - (("SETPO") (:|r/m8|) (#xF #x9B :/2)) - (("SETL") (:|r/m8|) (#xF #x9C :/2)) - (("SETNGE") (:|r/m8|) (#xF #x9C :/2)) - (("SETGE") (:|r/m8|) (#xF #x9D :/2)) - (("SETNL") (:|r/m8|) (#xF #x9D :/2)) - (("SETLE") (:|r/m8|) (#xF #x9E :/2)) - (("SETNG") (:|r/m8|) (#xF #x9E :/2)) - (("SETG") (:|r/m8|) (#xF #x9F :/2)) - (("SETNLE") (:|r/m8|) (#xF #x9F :/2)) - (("CMOV0") (:|reg32| :|r/m32|) (:|o32| #xF #x40 :|/r|)) - (("CMOVNO") (:|reg32| :|r/m32|) (:|o32| #xF #x41 :|/r|)) - (("CMOVB") (:|reg32| :|r/m32|) (:|o32| #xF #x42 :|/r|)) - (("CMOVC") (:|reg32| :|r/m32|) (:|o32| #xF #x42 :|/r|)) - (("CMOVNAE") (:|reg32| :|r/m32|) (:|o32| #xF #x42 :|/r|)) - (("CMOVAE") (:|reg32| :|r/m32|) (:|o32| #xF #x43 :|/r|)) - (("CMOVNB") (:|reg32| :|r/m32|) (:|o32| #xF #x43 :|/r|)) - (("CMOVNC") (:|reg32| :|r/m32|) (:|o32| #xF #x43 :|/r|)) - (("CMOVE") (:|reg32| :|r/m32|) (:|o32| #xF #x44 :|/r|)) - (("CMOVZ") (:|reg32| :|r/m32|) (:|o32| #xF #x44 :|/r|)) - (("CMOVNE") (:|reg32| :|r/m32|) (:|o32| #xF #x45 :|/r|)) - (("CMOVNZ") (:|reg32| :|r/m32|) (:|o32| #xF #x45 :|/r|)) - (("CMOVBE") (:|reg32| :|r/m32|) (:|o32| #xF #x46 :|/r|)) - (("CMOVNA") (:|reg32| :|r/m32|) (:|o32| #xF #x46 :|/r|)) - (("CMOVA") (:|reg32| :|r/m32|) (:|o32| #xF #x47 :|/r|)) - (("CMOVNBE") (:|reg32| :|r/m32|) (:|o32| #xF #x47 :|/r|)) - (("CMOVS") (:|reg32| :|r/m32|) (:|o32| #xF #x48 :|/r|)) - (("CMOVNS") (:|reg32| :|r/m32|) (:|o32| #xF #x49 :|/r|)) - (("CMOVP") (:|reg32| :|r/m32|) (:|o32| #xF #x4A :|/r|)) - (("CMOVPE") (:|reg32| :|r/m32|) (:|o32| #xF #x4A :|/r|)) - (("CMOVNP") (:|reg32| :|r/m32|) (:|o32| #xF #x4B :|/r|)) - (("CMOVPO") (:|reg32| :|r/m32|) (:|o32| #xF #x4B :|/r|)) - (("CMOVL") (:|reg32| :|r/m32|) (:|o32| #xF #x4C :|/r|)) - (("CMOVNGE") (:|reg32| :|r/m32|) (:|o32| #xF #x4C :|/r|)) - (("CMOVGE") (:|reg32| :|r/m32|) (:|o32| #xF #x4D :|/r|)) - (("CMOVNL") (:|reg32| :|r/m32|) (:|o32| #xF #x4D :|/r|)) - (("CMOVLE") (:|reg32| :|r/m32|) (:|o32| #xF #x4E :|/r|)) - (("CMOVNG") (:|reg32| :|r/m32|) (:|o32| #xF #x4E :|/r|)) - (("CMOVG") (:|reg32| :|r/m32|) (:|o32| #xF #x4F :|/r|)) - (("CMOVNLE") (:|reg32| :|r/m32|) (:|o32| #xF #x4F :|/r|)) - (("CMOV0") (:|reg16| :|r/m16|) (:|o16| #xF #x40 :|/r|)) - (("CMOVNO") (:|reg16| :|r/m16|) (:|o16| #xF #x41 :|/r|)) - (("CMOVB") (:|reg16| :|r/m16|) (:|o16| #xF #x42 :|/r|)) - (("CMOVC") (:|reg16| :|r/m16|) (:|o16| #xF #x42 :|/r|)) - (("CMOVNAE") (:|reg16| :|r/m16|) (:|o16| #xF #x42 :|/r|)) - (("CMOVAE") (:|reg16| :|r/m16|) (:|o16| #xF #x43 :|/r|)) - (("CMOVNB") (:|reg16| :|r/m16|) (:|o16| #xF #x43 :|/r|)) - (("CMOVNC") (:|reg16| :|r/m16|) (:|o16| #xF #x43 :|/r|)) - (("CMOVE") (:|reg16| :|r/m16|) (:|o16| #xF #x44 :|/r|)) - (("CMOVZ") (:|reg16| :|r/m16|) (:|o16| #xF #x44 :|/r|)) - (("CMOVNE") (:|reg16| :|r/m16|) (:|o16| #xF #x45 :|/r|)) - (("CMOVNZ") (:|reg16| :|r/m16|) (:|o16| #xF #x45 :|/r|)) - (("CMOVBE") (:|reg16| :|r/m16|) (:|o16| #xF #x46 :|/r|)) - (("CMOVNA") (:|reg16| :|r/m16|) (:|o16| #xF #x46 :|/r|)) - (("CMOVA") (:|reg16| :|r/m16|) (:|o16| #xF #x47 :|/r|)) - (("CMOVNBE") (:|reg16| :|r/m16|) (:|o16| #xF #x47 :|/r|)) - (("CMOVS") (:|reg16| :|r/m16|) (:|o16| #xF #x48 :|/r|)) - (("CMOVNS") (:|reg16| :|r/m16|) (:|o16| #xF #x49 :|/r|)) - (("CMOVP") (:|reg16| :|r/m16|) (:|o16| #xF #x4A :|/r|)) - (("CMOVPE") (:|reg16| :|r/m16|) (:|o16| #xF #x4A :|/r|)) - (("CMOVNP") (:|reg16| :|r/m16|) (:|o16| #xF #x4B :|/r|)) - (("CMOVPO") (:|reg16| :|r/m16|) (:|o16| #xF #x4B :|/r|)) - (("CMOVL") (:|reg16| :|r/m16|) (:|o16| #xF #x4C :|/r|)) - (("CMOVNGE") (:|reg16| :|r/m16|) (:|o16| #xF #x4C :|/r|)) - (("CMOVGE") (:|reg16| :|r/m16|) (:|o16| #xF #x4D :|/r|)) - (("CMOVNL") (:|reg16| :|r/m16|) (:|o16| #xF #x4D :|/r|)) - (("CMOVLE") (:|reg16| :|r/m16|) (:|o16| #xF #x4E :|/r|)) - (("CMOVNG") (:|reg16| :|r/m16|) (:|o16| #xF #x4E :|/r|)) - (("CMOVG") (:|reg16| :|r/m16|) (:|o16| #xF #x4F :|/r|)) - (("CMOVNLE") (:|reg16| :|r/m16|) (:|o16| #xF #x4F :|/r|)))) - -(defparameter *instruction-lookup-table* - (make-hash-table :test 'eq)) - -;; transform the above into a more useful hashtable -(defun make-instruction-hash-table () - "(make-instruction-hash-table) Transform our list of -instructions extracted from the NASM docs to a useful -hashtable" - (flet ((get-instruction-names () - (mapcar #'(lambda (i) - (intern (first (first i)) :KEYWORD)) - *instruction-table*)) - (get-instruction-descriptions () - (mapcar #'(lambda (i) - (rest i)) *instruction-table*))) - (loop - for name in (get-instruction-names) - for description in (get-instruction-descriptions) - do - (progn - (format *debug-io* "Adding ~W to table - ~A ~%" - name description) - (setf (gethash name *instruction-lookup-table*) - (cons description - (gethash name - *instruction-lookup-table*))))))) - -(defun lookup-instruction (instruction-designator) - "(lookup-instruction instruction-designator) if -instruction is a recognised instruction, return it -and it's description as a pair of values" - (ctypecase instruction-designator - (string (let - ((instruction-symbol - (find-symbol - instruction-designator :KEYWORD))) - (if instruction-symbol - (values - instruction-symbol - (gethash instruction-symbol - *instruction-lookup-table*)) - (error "Unknown instruction ~A " - instruction-designator)))) - (symbol (if (eq (symbol-package instruction-designator) - (find-package 'keyword)) - (values - instruction-designator - (gethash instruction-designator - *instruction-lookup-table*)) - (error "Unknown instruction ~A " - instruction-designator))))) - - -;; constructors accessors for instuction encoding ------------------------- - -(defun make-mod-rm-byte (mod r/m spare) - (logior - (ash mod 6) - (ash spare 3) - r/m)) - -(defun get-mod-rm-field (field modrm) - (ccase field - (:mod (ash modrm -6)) - (:spare (logand (ash modrm -3) #X7)) - (:|r/m| (logand modrm #X7)))) - - -(defun make-sib-byte (scale index base) - (logior - (ash scale 6) - (ash index 3) - base)) - -(defun get-sib-field (field sib) - (ccase field - (:scale (ash sib -6)) - (:index (logand (ash sib -3) #X7)) - (:base (logand sib #X7)))) - - - -(defun make-instruction () - "(make-instruction - create a new assoc list to -represent an empty instruction." - (let ((instruction (gensym "INSTRUCTION"))) - (setf (get instruction :prefix) NIL) - (setf (get instruction :opcodes) NIL) - (setf (get instruction :|mod-r/m|) NIL) - (setf (get instruction :|sib|) NIL) - (setf (get instruction :displacement) NIL) - (setf (get instruction :immediate-data) NIL) - (setf (get instruction :immediate-symbol) NIL) - (setf (get instruction :displacement-symbol) NIL) - instruction)) - -(defun flatten-instruction (instruction) - (append - (get instruction :prefix) - (get instruction :opcodes) - (if (not (null (get instruction :|mod-r/m|))) - (list (get instruction :|mod-r/m|))) - (if (not (null (get instruction :|sib|))) - (list (get instruction :|sib|))) - (get instruction :displacement) - (get instruction :immediate-data))) - -(defun print-instruction (prefix instruction) - (format *debug-io* "Instruction ~A ~A ~&" - prefix - (list (get instruction :prefix) - (get instruction :opcodes) - (get instruction :|mod-r/m|) - (get instruction :|sib|) - (get instruction :displacement) - (get instruction :immediate-data) - (get instruction :immediate-symbol) - (get instruction :displacement-symbol)))) - \ No newline at end of file + + +(in-package :cl-x86-asm) + +(declaim (optimize (debug 3) (speed 0) (safety 3) (compilation-speed 0))) + +(defparameter *instruction-table* + '((("XORPS") (:|xmm1| :|xmm2/m128|) (#xF #x57 :|/r|)) + (("XORPD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x57 :|/r|)) + (("XOR") (:|EAX| :|imm32|) (:|o32| #x35 :|id|)) + (("XOR") (:AX :|imm16|) (:|o16| #x35 :|iw|)) + (("XOR") (:AL :|imm8|) (#x34 :|ib|)) + (("XOR") (:|r/m32| :|imm8|) (:|o32| #x83 :/6 :|ib|)) + (("XOR") (:|r/m16| :|imm8|) (:|o16| #x83 :/6 :|ib|)) + (("XOR") (:|r/m32| :|imm32|) (:|o32| #x81 :/6 :|id|)) + (("XOR") (:|r/m16| :|imm16|) (:|o16| #x81 :/6 :|iw|)) + (("XOR") (:|r/m8| :|imm8|) (#x80 :/6 :|ib|)) + (("XOR") (:|reg32| :|r/m32|) (:|o32| #x33 :|/r|)) + (("XOR") (:|reg16| :|r/m16|) (:|o16| #x33 :|/r|)) + (("XOR") (:|reg8| :|r/m8|) (#x32 :|/r|)) + (("XOR") (:|r/m32| :|reg32|) (:|o32| #x31 :|/r|)) + (("XOR") (:|r/m16| :|reg16|) (:|o16| #x31 :|/r|)) + (("XOR") (:|r/m8| :|reg8|) (#x30 :|/r|)) + (("XLATB") (:|none|) (#xD7)) + (("XLAT") (:|none|) (#xD7)) + (("XCHG") (:|reg32| :|EAX|) (:|o32| #x90 :|+r|)) + (("XCHG") (:|reg16| :AX) (:|o16| #x90 :|+r|)) + (("XCHG") (:|EAX| :|reg32|) (:|o32| #x90 :|+r|)) + (("XCHG") (:AX :|reg16|) (:|o16| #x90 :|+r|)) + (("XCHG") (:|r/m32| :|reg32|) (:|o32| #x87 :|/r|)) + (("XCHG") (:|r/m16| :|reg16|) (:|o16| #x87 :|/r|)) + (("XCHG") (:|r/m8| :|reg8|) (#x86 :|/r|)) + (("XCHG") (:|reg32| :|r/m32|) (:|o32| #x87 :|/r|)) + (("XCHG") (:|reg16| :|r/m8|) (:|o16| #x87 :|/r|)) + (("XCHG") (:|reg8| :|r/m8|) (#x86 :|/r|)) + (("XBTS") (:|reg32| :|r/m32|) (:|o32| #xF #xA6 :|/r|)) + (("XBTS") (:|reg16| :|r/m16|) (:|o16| #xF #xA6 :|/r|)) + (("XADD") (:|r/m32| :|reg32|) (:|o32| #xF #xC1 :|/r|)) + (("XADD") (:|r/m16| :|reg16|) (:|o16| #xF #xC1 :|/r|)) + (("XADD") (:|r/m8| :|reg8|) (#xF #xC0 :|/r|)) + (("WRSHR") (:|r/m32|) (#xF #x37 :/0)) + (("WRMSR") (:|none|) (#xF #x30)) + (("WBINVD") (:|none|) (#xF #x9)) + (("FWAIT") (:|none|) (#x9B)) + (("WAIT") (:|none|) (#x9B)) + (("VERW") (:|r/m16|) (#xF #x0 :/5)) + (("VERR") (:|r/m16|) (#xF #x0 :/4)) + (("UNPCKLPS") (:|xmm1| :|xmm2/m128|) (#xF #x14 :|/r|)) + (("UNPCKLPD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x14 :|/r|)) + (("UNPCKHPS") (:|xmm1| :|xmm2/m128|) (#xF #x15 :|/r|)) + (("UNPCKHPD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x15 :|/r|)) + (("UMOV") (:|reg32| :|r/m32|) (:|o32| #xF #x13 :|/r|)) + (("UMOV") (:|reg16| :|r/m16|) (:|o16| #xF #x13 :|/r|)) + (("UMOV") (:|reg8| :|r/m8|) (#xF #x12 :|/r|)) + (("UMOV") (:|r/m32| :|reg32|) (:|o32| #xF #x11 :|/r|)) + (("UMOV") (:|r/m16| :|reg16|) (:|o16| #xF #x11 :|/r|)) + (("UMOV") (:|r/m8| :|reg8|) (#xF #x10 :|/r|)) + (("UD2") (:|none|) (#xF #xB)) + (("UD1") (:|none|) (#xF #xB9)) + (("UD0") (:|none|) (#xF #xFF)) + (("UCOMISS") (:|xmm1| :|xmm2/m128|) (#xF #x2E :|/r|)) + (("UCOMISD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x2E :|/r|)) + (("TEST") (:|EAX| :|imm32|) (:|o32| #xA9 :|id|)) + (("TEST") (:AX :|imm16|) (:|o16| #xA9 :|iw|)) + (("TEST") (:AL :|imm8|) (#xA8 :|ib|)) + (("TEST") (:|r/m32| :|imm32|) (:|o32| #xF7 :/0 :|id|)) + (("TEST") (:|r/m16| :|imm16|) (:|o16| #xF7 :/0 :|iw|)) + (("TEST") (:|r/m8| :|imm8|) (#xF6 :/0 :|ib|)) + (("TEST") (:|r/m32| :|reg32|) (:|o32| #x85 :|/r|)) + (("TEST") (:|r/m16| :|reg16|) (:|o16| #x85 :|/r|)) + (("TEST") (:|r/m8| :|reg8|) (#x84 :|/r|)) + (("SYSRET") (:|none|) (#xF #x7)) + (("SYSEXIT") (:|none|) (#xF #x35)) + (("SYSENTER") (:|none|) (#xF #x34)) + (("SYSCALL") (:|none|) (#xF #x5)) + (("SVTS") (:|m80|) (#xF #x7C :/0)) + (("SVLDT") (:|m80|) (#xF #x7A :/0)) + (("SVDC") (:|m80| :|segreg|) (#xF #x78 :|/r|)) + (("SUBSS") (:|xmm1| :|xmm2/m128|) (#xF3 #xF #x5C :|/r|)) + (("SUBSD") (:|xmm1| :|xmm2/m128|) (#xF2 #xF #x5C :|/r|)) + (("SUBPS") (:|xmm1| :|xmm2/m128|) (#xF #x5C :|/r|)) + (("SUBPD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x5C :|/r|)) + (("SUB") (:|EAX| :|imm32|) (:|o32| #x2D :|id|)) + (("SUB") (:AX :|imm16|) (:|o16| #x2D :|iw|)) + (("SUB") (:AL :|imm8|) (#x2C :|ib|)) + (("SUB") (:|r/m32| :|imm8|) (:|o32| #x83 :/5 :|ib|)) + (("SUB") (:|r/m16| :|imm8|) (:|o16| #x83 :/5 :|ib|)) + (("SUB") (:|r/m32| :|imm32|) (:|o32| #x81 :/5 :|id|)) + (("SUB") (:|r/m16| :|imm16|) (:|o16| #x81 :/5 :|iw|)) + (("SUB") (:|r/m8| :|imm8|) (#x80 :/5 :|ib|)) + (("SUB") (:|reg32| :|r/m32|) (:|o32| #x2B :|/r|)) + (("SUB") (:|reg16| :|r/m16|) (:|o16| #x2B :|/r|)) + (("SUB") (:|reg8| :|r/m8|) (#x2A :|/r|)) + (("SUB") (:|r/m32| :|reg32|) (:|o32| #x29 :|/r|)) + (("SUB") (:|r/m16| :|reg16|) (:|o16| #x29 :|/r|)) + (("SUB") (:|r/m8| :|reg8|) (#x28 :|/r|)) + (("STR") (:|r/m16|) (#xF #x0 :/1)) + (("STOSD") (:|none|) (:|o32| #xAB)) + (("STOSW") (:|none|) (:|o16| #xAB)) + (("STOSB") (:|none|) (#xAA)) + (("STMXCSR") (:|m32|) (#xF #xAE :/3)) + (("STI") (:|none|) (#xFB)) + (("STD") (:|none|) (#xFD)) + (("STC") (:|none|) (#xF9)) + (("SQRTSS") (:|xmm1| :|xmm2/m128|) (#xF3 #xF #x51 :|/r|)) + (("SQRTSD") (:|xmm1| :|xmm2/m128|) (#xF2 #xF #x51 :|/r|)) + (("SQRTPS") (:|xmm1| :|xmm2/m128|) (#xF #x51 :|/r|)) + (("SQRTPD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x51 :|/r|)) + (("SMSW") (:|r/m16|) (#xF #x1 :/4)) + (("SMINTOLD") (:|none|) (#xF #x7E)) + (("SMINT") (:|none|) (#xF #x38)) + (("SMI") (:|none|) (#xF1)) + (("SHUFPS") (:|xmm1| :|xmm2/m128| :|imm8|) (#xF #xC6 :|/r| :|ib|)) + (("SHUFPD") (:|xmm1| :|xmm2/m128| :|imm8|) (#x66 #xF #xC6 :|/r| :|ib|)) + (("SHRD") (:|r/m32| :|reg32| :CL) (:|o32| #xF #xAD :|/r|)) + (("SHRD") (:|r/m16| :|reg16| :CL) (:|o16| #xF #xAD :|/r|)) + (("SHRD") (:|r/m32| :|reg32| :|imm8|) (:|o32| #xF #xAC :|/r| :|ib|)) + (("SHRD") (:|r/m16| :|reg16| :|imm8|) (:|o16| #xF #xAC :|/r| :|ib|)) + (("SHLD") (:|r/m16| :|reg32| :CL) (:|o32| #xF #xA5 :|/r|)) + (("SHLD") (:|r/m16| :|reg16| :CL) (:|o16| #xF #xA5 :|/r|)) + (("SHLD") (:|r/m16| :|reg32| :|imm8|) (:|o32| #xF #xA4 :|/r| :|ib|)) + (("SHLD") (:|r/m16| :|reg16| :|imm8|) (:|o16| #xF #xA4 :|/r| :|ib|)) + (("SHR") (:|r/m32| :|imm8|) (:|o32| #xC1 :/5 :|ib|)) + (("SHR") (:|r/m32| :CL) (:|o32| #xD3 :/5)) + (("SHR") (:|r/m32| :|1|) (:|o32| #xD1 :/5)) + (("SHR") (:|r/m16| :|imm8|) (:|o16| #xC1 :/5 :|ib|)) + (("SHR") (:|r/m16| :CL) (:|o16| #xD3 :/5)) + (("SHR") (:|r/m16| :|1|) (:|o16| #xD1 :/5)) + (("SHR") (:|r/m8| :|imm8|) (#xC0 :/5 :|ib|)) + (("SHR") (:|r/m8| :CL) (#xD2 :/5)) + (("SHR") (:|r/m8| :|1|) (#xD0 :/5)) + (("SHL") (:|r/m32| :|imm8|) (:|o32| #xC1 :/4 :|ib|)) + (("SHL") (:|r/m32| :CL) (:|o32| #xD3 :/4)) + (("SHL") (:|r/m32| :|1|) (:|o32| #xD1 :/4)) + (("SHL") (:|r/m16| :|imm8|) (:|o16| #xC1 :/4 :|ib|)) + (("SHL") (:|r/m16| :CL) (:|o16| #xD3 :/4)) + (("SHL") (:|r/m16| :|1|) (:|o16| #xD1 :/4)) + (("SHL") (:|r/m8| :|imm8|) (#xC0 :/4 :|ib|)) + (("SHL") (:|r/m8| :CL) (#xD2 :/4)) + (("SHL") (:|r/m8| :|1|) (#xD0 :/4)) + (("SLDT") (:|r/m16|) (#xF #x0 :/0)) + (("SIDT") (:|mem|) (#xF #x1 :/1)) + (("SGDT") (:|mem|) (#xF #x1 :/0)) + (("SFENCE") (:|none|) (#xF #xAE :/7)) + ;; (("SETcc") (:|r/m8|) (#xF #x90 :|+cc| :/2)) + (("SCASD") (:|none|) (:|o32| #xAF)) + (("SCASW") (:|none|) (:|o16| #xAF)) + (("SCASB") (:|none|) (#xAE)) + (("SBB") (:|EAX| :|imm32|) (:|o32| #x1D :|id|)) + (("SBB") (:AX :|imm16|) (:|o16| #x1D :|iw|)) + (("SBB") (:AL :|imm8|) (#x1C :|ib|)) + (("SBB") (:|r/m32| :|imm8|) (:|o32| #x83 :/3 :|ib|)) + (("SBB") (:|r/m16| :|imm8|) (:|o16| #x83 :/3 :|ib|)) + (("SBB") (:|r/m32| :|imm32|) (:|o32| #x81 :/3 :|id|)) + (("SBB") (:|r/m16| :|imm16|) (:|o16| #x81 :/3 :|iw|)) + (("SBB") (:|r/m8| :|imm8|) (#x80 :/3 :|ib|)) + (("SBB") (:|reg32| :|r/m32|) (:|o32| #x1B :|/r|)) + (("SBB") (:|reg16| :|r/m16|) (:|o16| #x1B :|/r|)) + (("SBB") (:|reg8| :|r/m8|) (#x1A :|/r|)) + (("SBB") (:|r/m32| :|reg32|) (:|o32| #x19 :|/r|)) + (("SBB") (:|r/m16| :|reg16|) (:|o16| #x19 :|/r|)) + (("SBB") (:|r/m8| :|reg8|) (#x18 :|/r|)) + (("SALC") (:|none|) (#xD6)) + (("SAR") (:|r/m32| :|imm8|) (:|o32| #xC1 :/7 :|ib|)) + (("SAR") (:|r/m32| :CL) (:|o32| #xD3 :/7)) + (("SAR") (:|r/m32| :|1|) (:|o32| #xD1 :/7)) + (("SAR") (:|r/m16| :|imm8|) (:|o16| #xC1 :/7 :|ib|)) + (("SAR") (:|r/m16| :CL) (:|o16| #xD3 :/7)) + (("SAR") (:|r/m16| :|1|) (:|o16| #xD1 :/7)) + (("SAR") (:|r/m8| :|imm8|) (#xC0 :/7 :|ib|)) + (("SAR") (:|r/m8| :CL) (#xD2 :/7)) + (("SAR") (:|r/m8| :|1|) (#xD0 :/7)) + (("SAL") (:|r/m32| :|imm8|) (:|o32| #xC1 :/4 :|ib|)) + (("SAL") (:|r/m32| :CL) (:|o32| #xD3 :/4)) + (("SAL") (:|r/m32| :|1|) (:|o32| #xD1 :/4)) + (("SAL") (:|r/m16| :|imm8|) (:|o16| #xC1 :/4 :|ib|)) + (("SAL") (:|r/m16| :CL) (:|o16| #xD3 :/4)) + (("SAL") (:|r/m16| :|1|) (:|o16| #xD1 :/4)) + (("SAL") (:|r/m8| :|imm8|) (#xC0 :/4 :|ib|)) + (("SAL") (:|r/m8| :CL) (#xD2 :/4)) + (("SAL") (:|r/m8| :|1|) (#xD0 :/4)) + (("SAHF") (:|none|) (#x9E)) + (("RSTS") (:|m80|) (#xF #x7D :/0)) + (("RSQRTSS") (:|xmm1| :|xmm2/m128|) (#xF3 #xF #x52 :|/r|)) + (("RSQRTPS") (:|xmm1| :|xmm2/m128|) (#xF #x52 :|/r|)) + (("RSM") (:|none|) (#xF #xAA)) + (("RSLDT") (:|m80|) (#xF #x7B :/0)) + (("RSDC") (:|segreg| :|m80|) (#xF #x79 :|/r|)) + (("ROR") (:|r/m32| :|imm8|) (:|o32| #xC1 :/1 :|ib|)) + (("ROR") (:|r/m32| :CL) (:|o32| #xD3 :/1)) + (("ROR") (:|r/m32| :|1|) (:|o32| #xD1 :/1)) + (("ROR") (:|r/m16| :|imm8|) (:|o16| #xC1 :/1 :|ib|)) + (("ROR") (:|r/m16| :CL) (:|o16| #xD3 :/1)) + (("ROR") (:|r/m16| :|1|) (:|o16| #xD1 :/1)) + (("ROR") (:|r/m8| :|imm8|) (#xC0 :/1 :|ib|)) + (("ROR") (:|r/m8| :CL) (#xD2 :/1)) + (("ROR") (:|r/m8| :|1|) (#xD0 :/1)) + (("ROL") (:|r/m32| :|imm8|) (:|o32| #xC1 :/0 :|ib|)) + (("ROL") (:|r/m32| :CL) (:|o32| #xD3 :/0)) + (("ROL") (:|r/m32| :|1|) (:|o32| #xD1 :/0)) + (("ROL") (:|r/m16| :|imm8|) (:|o16| #xC1 :/0 :|ib|)) + (("ROL") (:|r/m16| :CL) (:|o16| #xD3 :/0)) + (("ROL") (:|r/m16| :|1|) (:|o16| #xD1 :/0)) + (("ROL") (:|r/m8| :|imm8|) (#xC0 :/0 :|ib|)) + (("ROL") (:|r/m8| :CL) (#xD2 :/0)) + (("ROL") (:|r/m8| :|1|) (#xD0 :/0)) + (("RETN") (:|imm16|) (#xC2 :|iw|)) + (("RETN") (:|none|) (#xC3)) + (("RETF") (:|imm16|) (#xCA :|iw|)) + (("RETF") (:|none|) (#xCB)) + (("RET") (:|imm16|) (#xC2 :|iw|)) + (("RET") (:|none|) (#xC3)) + (("RDTSC") (:|none|) (#xF #x31)) + (("RDSHR") (:|r/m32|) (#xF #x36 :/0)) + (("RDPMC") (:|none|) (#xF #x33)) + (("RDMSR") (:|none|) (#xF #x32)) + (("RCPSS") (:|xmm1| :|xmm2/m128|) (#xF3 #xF #x53 :|/r|)) + (("RCPPS") (:|xmm1| :|xmm2/m128|) (#xF #x53 :|/r|)) + (("RCR") (:|r/m32| :|imm8|) (:|o32| #xC1 :/3 :|ib|)) + (("RCR") (:|r/m32| :CL) (:|o32| #xD3 :/3)) + (("RCR") (:|r/m32| :|1|) (:|o32| #xD1 :/3)) + (("RCR") (:|r/m16| :|imm8|) (:|o16| #xC1 :/3 :|ib|)) + (("RCR") (:|r/m16| :CL) (:|o16| #xD3 :/3)) + (("RCR") (:|r/m16| :|1|) (:|o16| #xD1 :/3)) + (("RCR") (:|r/m8| :|imm8|) (#xC0 :/3 :|ib|)) + (("RCR") (:|r/m8| :CL) (#xD2 :/3)) + (("RCR") (:|r/m8| :|1|) (#xD0 :/3)) + (("RCL") (:|r/m32| :|imm8|) (:|o32| #xC1 :/2 :|ib|)) + (("RCL") (:|r/m32| :CL) (:|o32| #xD3 :/2)) + (("RCL") (:|r/m32| :|1|) (:|o32| #xD1 :/2)) + (("RCL") (:|r/m16| :|imm8|) (:|o16| #xC1 :/2 :|ib|)) + (("RCL") (:|r/m16| :CL) (:|o16| #xD3 :/2)) + (("RCL") (:|r/m16| :|1|) (:|o16| #xD1 :/2)) + (("RCL") (:|r/m8| :|imm8|) (#xC0 :/2 :|ib|)) + (("RCL") (:|r/m8| :CL) (#xD2 :/2)) + (("RCL") (:|r/m8| :|1|) (#xD0 :/2)) + (("PXOR") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xEF :|/r|)) + (("PXOR") (:|mm1| :|mm2/m64|) (#xF #xEF :|/r|)) + (("PUSHFW") (:|none|) (:|o16| #x9C)) + (("PUSHFD") (:|none|) (:|o32| #x9C)) + (("PUSHF") (:|none|) (#x9C)) + (("PUSHAW") (:|none|) (:|o16| #x60)) + (("PUSHAD") (:|none|) (:|o32| #x60)) + (("PUSHA") (:|none|) (#x60)) + (("PUSH") (:|imm32|) (:|o32| #x68 :|id|)) + (("PUSH") (:|imm16|) (:|o16| #x68 :|iw|)) + (("PUSH") (:|imm8|) (#x6A :|ib|)) + (("PUSH") (:GS) (#xF #xA8)) + (("PUSH") (:FS) (#xF #xA0)) + (("PUSH") (:SS) (#x16)) + (("PUSH") (:ES) (#x6)) + (("PUSH") (:DS) (#x1E)) + (("PUSH") (:CS) (#xE)) + (("PUSH") (:|r/m32|) (:|o32| #xFF :/6)) + (("PUSH") (:|r/m16|) (:|o16| #xFF :/6)) + (("PUSH") (:|reg32|) (:|o32| #x50 :|+r|)) + (("PUSH") (:|reg16|) (:|o16| #x50 :|+r|)) + (("PUNPCKLQDQ") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x6C :|/r|)) + (("PUNPCKLDQ") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x62 :|/r|)) + (("PUNPCKLWD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x61 :|/r|)) + (("PUNPCKLBW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x60 :|/r|)) + (("PUNPCKLDQ") (:|mm1| :|mm2/m32|) (#xF #x62 :|/r|)) + (("PUNPCKLWD") (:|mm1| :|mm2/m32|) (#xF #x61 :|/r|)) + (("PUNPCKLBW") (:|mm1| :|mm2/m32|) (#xF #x60 :|/r|)) + (("PUNPCKHQDQ") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x6D :|/r|)) + (("PUNPCKHDQ") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x6A :|/r|)) + (("PUNPCKHWD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x69 :|/r|)) + (("PUNPCKHBW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x68 :|/r|)) + (("PUNPCKHDQ") (:|mm1| :|mm2/m64|) (#xF #x6A :|/r|)) + (("PUNPCKHWD") (:|mm1| :|mm2/m64|) (#xF #x69 :|/r|)) + (("PUNPCKHBW") (:|mm1| :|mm2/m64|) (#xF #x68 :|/r|)) + (("PSWAPD") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xBB)) + (("PSUBSIW") (:|mm1| :|mm2/m64|) (#xF #x55 :|/r|)) + (("PSUBUSW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xD9 :|/r|)) + (("PSUBUSB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xD8 :|/r|)) + (("PSUBUSW") (:|mm1| :|mm2/m64|) (#xF #xD9 :|/r|)) + (("PSUBUSB") (:|mm1| :|mm2/m64|) (#xF #xD8 :|/r|)) + (("PSUBSW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xE9 :|/r|)) + (("PSUBSB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xE8 :|/r|)) + (("PSUBSW") (:|mm1| :|mm2/m64|) (#xF #xE9 :|/r|)) + (("PSUBSB") (:|mm1| :|mm2/m64|) (#xF #xE8 :|/r|)) + (("PSUBQ") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xFB :|/r|)) + (("PSUBD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xFA :|/r|)) + (("PSUBW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xF9 :|/r|)) + (("PSUBB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xF8 :|/r|)) + (("PSUBQ") (:|mm1| :|mm2/m64|) (#xF #xFB :|/r|)) + (("PSUBD") (:|mm1| :|mm2/m64|) (#xF #xFA :|/r|)) + (("PSUBW") (:|mm1| :|mm2/m64|) (#xF #xF9 :|/r|)) + (("PSUBB") (:|mm1| :|mm2/m64|) (#xF #xF8 :|/r|)) + (("PSRLDQ") (:|xmm1| :|imm8|) (#x66 #xF #x73 :/3 :|ib|)) + (("PSRLQ") (:|xmm| :|imm8|) (#x66 #xF #x73 :/2 :|ib|)) + (("PSRLQ") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xD3 :|/r|)) + (("PSRLQ") (:|mm| :|imm8|) (#xF #x73 :/2 :|ib|)) + (("PSRLQ") (:|mm1| :|mm2/m64|) (#xF #xD3 :|/r|)) + (("PSRLD") (:|xmm| :|imm8|) (#x66 #xF #x72 :/2 :|ib|)) + (("PSRLD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xD2 :|/r|)) + (("PSRLD") (:|mm| :|imm8|) (#xF #x72 :/2 :|ib|)) + (("PSRLD") (:|mm1| :|mm2/m64|) (#xF #xD2 :|/r|)) + (("PSRLW") (:|xmm| :|imm8|) (#x66 #xF #x71 :/2 :|ib|)) + (("PSRLW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xD1 :|/r|)) + (("PSRLW") (:|mm| :|imm8|) (#xF #x71 :/2 :|ib|)) + (("PSRLW") (:|mm1| :|mm2/m64|) (#xF #xD1 :|/r|)) + (("PSRAD") (:|xmm| :|imm8|) (#x66 #xF #x72 :/4 :|ib|)) + (("PSRAD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xE2 :|/r|)) + (("PSRAD") (:|mm| :|imm8|) (#xF #x72 :/4 :|ib|)) + (("PSRAD") (:|mm1| :|mm2/m64|) (#xF #xE2 :|/r|)) + (("PSRAW") (:|xmm| :|imm8|) (#x66 #xF #x71 :/4 :|ib|)) + (("PSRAW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xE1 :|/r|)) + (("PSRAW") (:|mm| :|imm8|) (#xF #x71 :/4 :|ib|)) + (("PSRAW") (:|mm1| :|mm2/m64|) (#xF #xE1 :|/r|)) + (("PSLLDQ") (:|xmm1| :|imm8|) (#x66 #xF #x73 :/7 :|ib|)) + (("PSLLQ") (:|xmm| :|imm8|) (#x66 #xF #x73 :/6 :|ib|)) + (("PSLLQ") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xF3 :|/r|)) + (("PSLLQ") (:|mm| :|imm8|) (#xF #x73 :/6 :|ib|)) + (("PSLLQ") (:|mm1| :|mm2/m64|) (#xF #xF3 :|/r|)) + (("PSLLD") (:|xmm| :|imm8|) (#x66 #xF #x72 :/6 :|ib|)) + (("PSLLD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xF2 :|/r|)) + (("PSLLD") (:|mm| :|imm8|) (#xF #x72 :/6 :|ib|)) + (("PSLLD") (:|mm1| :|mm2/m64|) (#xF #xF2 :|/r|)) + (("PSLLW") (:|xmm| :|imm8|) (#x66 #xF #x71 :/6 :|ib|)) + (("PSLLW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xF1 :|/r|)) + (("PSLLW") (:|mm| :|imm8|) (#xF #x71 :/6 :|ib|)) + (("PSLLW") (:|mm1| :|mm2/m64|) (#xF #xF1 :|/r|)) + (("PSHUFW") (:|mm1| :|mm2/m64| :|imm8|) (#xF #x70 :|/r| :|ib|)) + (("PSHUFLW") (:|xmm1| :|xmm2/m128| :|imm8|) (#xF2 #xF #x70 :|/r| :|ib|)) + (("PSHUFHW") (:|xmm1| :|xmm2/m128| :|imm8|) (#xF3 #xF #x70 :|/r| :|ib|)) + (("PSHUFD") (:|xmm1| :|xmm2/m128| :|imm8|) (#x66 #xF #x70 :|/r| :|ib|)) + (("PSADBW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xF6 :|/r|)) + (("PSADBW") (:|mm1| :|mm2/m64|) (#xF #xF6 :|/r|)) + (("PREFETCHT2") (:|m8|) (#xF #x18 :/3)) + (("PREFETCHT1") (:|m8|) (#xF #x18 :/2)) + (("PREFETCHT0") (:|m8|) (#xF #x18 :/1)) + (("PREFETCHNTA") (:|m8|) (#xF #x18 :/0)) + (("PREFETCHW") (:|mem8|) (#xF #xD :/1)) + (("PREFETCH") (:|mem8|) (#xF #xD :/0)) + (("POR") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xEB :|/r|)) + (("POR") (:|mm1| :|mm2/m64|) (#xF #xEB :|/r|)) + (("POPFD") (:|none|) (:|o32| #x9D)) + (("POPFW") (:|none|) (:|o16| #x9D)) + (("POPF") (:|none|) (#x9D)) + (("POPAD") (:|none|) (:|o32| #x61)) + (("POPAW") (:|none|) (:|o16| #x61)) + (("POPA") (:|none|) (#x61)) + (("POP") (:GS) (#xF #xA9)) + (("POP") (:FS) (#xF #xA1)) + (("POP") (:SS) (#x17)) + (("POP") (:ES) (#x7)) + (("POP") (:DS) (#x1F)) + (("POP") (:CS) (#xF)) + (("POP") (:|r/m32|) (:|o32| #x8F :/0)) + (("POP") (:|r/m16|) (:|o16| #x8F :/0)) + (("POP") (:|reg32|) (:|o32| #x58 :|+r|)) + (("POP") (:|reg16|) (:|o16| #x58 :|+r|)) + (("PMVGEZB") (:|mmxreg| :|mem64|) (#xF #x5C :|/r|)) + (("PMVLZB") (:|mmxreg| :|mem64|) (#xF #x5B :|/r|)) + (("PMVNZB") (:|mmxreg| :|mem64|) (#xF #x5A :|/r|)) + (("PMVZB") (:|mmxreg| :|mem64|) (#xF #x58 :|/r|)) + (("PMULUDQ") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xF4 :|/r|)) + (("PMULUDQ") (:|mm1| :|mm2/m64|) (#xF #xF4 :|/r|)) + (("PMULLW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xD5 :|/r|)) + (("PMULHW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xE5 :|/r|)) + (("PMULLW") (:|mm1| :|mm2/m64|) (#xF #xD5 :|/r|)) + (("PMULHW") (:|mm1| :|mm2/m64|) (#xF #xE5 :|/r|)) + (("PMULHUW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xE4 :|/r|)) + (("PMULHUW") (:|mm1| :|mm2/m64|) (#xF #xE4 :|/r|)) + (("PMULHRWA") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xB7)) + (("PMULHRIW") (:|mm1| :|mm2/m64|) (#xF #x5D :|/r|)) + (("PMULHRWC") (:|mm1| :|mm2/m64|) (#xF #x59 :|/r|)) + (("PMOVMSKB") (:|reg32| :|xmm|) (#x66 #xF #xD7 :|/r|)) + (("PMOVMSKB") (:|reg32| :|mm|) (#xF #xD7 :|/r|)) + (("PMINUB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xDA :|/r|)) + (("PMINUB") (:|mm1| :|mm2/m64|) (#xF #xDA :|/r|)) + (("PMINSW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xEA :|/r|)) + (("PMINSW") (:|mm1| :|mm2/m64|) (#xF #xEA :|/r|)) + (("PMAXUB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xDE :|/r|)) + (("PMAXUB") (:|mm1| :|mm2/m64|) (#xF #xDE :|/r|)) + (("PMAXSW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xEE :|/r|)) + (("PMAXSW") (:|mm1| :|mm2/m64|) (#xF #xEE :|/r|)) + (("PMAGW") (:|mm1| :|mm2/m64|) (#xF #x52 :|/r|)) + (("PMADDWD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xF5 :|/r|)) + (("PMADDWD") (:|mm1| :|mm2/m64|) (#xF #xF5 :|/r|)) + (("PMACHRIW") (:|mm| :|m64|) (#xF #x5E :|/r|)) + (("PINSRW") (:|xmm| :|r16/r32/m16| :|imm8|) (#x66 #xF #xC4 :|/r| :|ib|)) + (("PINSRW") (:|mm| :|r16/r32/m16| :|imm8|) (#xF #xC4 :|/r| :|ib|)) + (("PI2FW") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xC)) + (("PI2FD") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xD)) + (("PFSUBR") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xAA)) + (("PFSUB") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #x9A)) + (("PFRSQRT") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #x97)) + (("PFRSQIT1") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xA7)) + (("PFRCPIT2") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xB6)) + (("PFRCPIT1") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xA6)) + (("PFRCP") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #x96)) + (("PFPNACC") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #x8E)) + (("PFNACC") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #x8A)) + (("PFMUL") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xB4)) + (("PFMIN") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #x94)) + (("PFMAX") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xA4)) + (("PFCMPGT") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xA0)) + (("PFCMPGE") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #x90)) + (("PFCMPEQ") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xB0)) + (("PFADD") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #x9E)) + (("PFACC") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xAE)) + (("PF2IW") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #x1C)) + (("PF2ID") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #x1D)) + (("PEXTRW") (:|reg32| :|xmm| :|imm8|) (#x66 #xF #xC5 :|/r| :|ib|)) + (("PEXTRW") (:|reg32| :|mm| :|imm8|) (#xF #xC5 :|/r| :|ib|)) + (("PDISTIB") (:|mm| :|m64|) (#xF #x54 :|/r|)) + (("PCMPGTD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x66 :|/r|)) + (("PCMPGTW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x65 :|/r|)) + (("PCMPGTB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x64 :|/r|)) + (("PCMPEQD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x76 :|/r|)) + (("PCMPEQW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x75 :|/r|)) + (("PCMPEQB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x74 :|/r|)) + (("PCMPGTD") (:|mm1| :|mm2/m64|) (#xF #x66 :|/r|)) + (("PCMPGTW") (:|mm1| :|mm2/m64|) (#xF #x65 :|/r|)) + (("PCMPGTB") (:|mm1| :|mm2/m64|) (#xF #x64 :|/r|)) + (("PCMPEQD") (:|mm1| :|mm2/m64|) (#xF #x76 :|/r|)) + (("PCMPEQW") (:|mm1| :|mm2/m64|) (#xF #x75 :|/r|)) + (("PCMPEQB") (:|mm1| :|mm2/m64|) (#xF #x74 :|/r|)) + (("PAVGUSB") (:|mm1| :|mm2/m64|) (#xF #xF :|/r| #xBF)) + (("PAVGW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xE3 :|/r|)) + (("PAVGB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xE0 :|/r|)) + (("PAVGW") (:|mm1| :|mm2/m64|) (#xF #xE3 :|/r|)) + (("PAVGB") (:|mm1| :|mm2/m64|) (#xF #xE0 :|/r|)) + (("PAVEB") (:|mmxreg| :|r/m64|) (#xF #x50 :|/r|)) + (("PAUSE") (:|none|) (#xF3 #x90)) + (("PANDN") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xDF :|/r|)) + (("PAND") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xDB :|/r|)) + (("PANDN") (:|mm1| :|mm2/m64|) (#xF #xDF :|/r|)) + (("PAND") (:|mm1| :|mm2/m64|) (#xF #xDB :|/r|)) + (("PADDUSW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xDD :|/r|)) + (("PADDUSB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xDC :|/r|)) + (("PADDUSW") (:|mm1| :|mm2/m64|) (#xF #xDD :|/r|)) + (("PADDUSB") (:|mm1| :|mm2/m64|) (#xF #xDC :|/r|)) + (("PADDSIW") (:|mmxreg| :|r/m64|) (#xF #x51 :|/r|)) + (("PADDSW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xED :|/r|)) + (("PADDSB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xEC :|/r|)) + (("PADDSW") (:|mm1| :|mm2/m64|) (#xF #xED :|/r|)) + (("PADDSB") (:|mm1| :|mm2/m64|) (#xF #xEC :|/r|)) + (("PADDQ") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xD4 :|/r|)) + (("PADDQ") (:|mm1| :|mm2/m64|) (#xF #xD4 :|/r|)) + (("PADDD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xFE :|/r|)) + (("PADDW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xFD :|/r|)) + (("PADDB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #xFC :|/r|)) + (("PADDD") (:|mm1| :|mm2/m64|) (#xF #xFE :|/r|)) + (("PADDW") (:|mm1| :|mm2/m64|) (#xF #xFD :|/r|)) + (("PADDB") (:|mm1| :|mm2/m64|) (#xF #xFC :|/r|)) + (("PACKUSWB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x67 :|/r|)) + (("PACKSSWB") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x63 :|/r|)) + (("PACKSSDW") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x6B :|/r|)) + (("PACKUSWB") (:|mm1| :|mm2/m64|) (#xF #x67 :|/r|)) + (("PACKSSWB") (:|mm1| :|mm2/m64|) (#xF #x63 :|/r|)) + (("PACKSSDW") (:|mm1| :|mm2/m64|) (#xF #x6B :|/r|)) + (("OUTSD") (:|none|) (:|o32| #x6F)) + (("OUTSW") (:|none|) (:|o16| #x6F)) + (("OUTSB") (:|none|) (#x6E)) + (("OUT") (:DX :|EAX|) (:|o32| #xEF)) + (("OUT") (:DX :AX) (:|o16| #xEF)) + (("OUT") (:DX :AL) (#xEE)) + (("OUT") (:|imm8| :|EAX|) (:|o32| #xE7 :|ib|)) + (("OUT") (:|imm8| :AX) (:|o16| #xE7 :|ib|)) + (("OUT") (:|imm8| :AL) (#xE6 :|ib|)) + (("ORPS") (:|xmm1| :|xmm2/m128|) (#xF #x56 :|/r|)) + (("ORPD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x56 :|/r|)) + (("OR") (:|EAX| :|imm32|) (:|o32| #xD :|id|)) + (("OR") (:AX :|imm16|) (:|o16| #xD :|iw|)) + (("OR") (:AL :|imm8|) (#xC :|ib|)) + (("OR") (:|r/m32| :|imm8|) (:|o32| #x83 :/1 :|ib|)) + (("OR") (:|r/m16| :|imm8|) (:|o16| #x83 :/1 :|ib|)) + (("OR") (:|r/m32| :|imm32|) (:|o32| #x81 :/1 :|id|)) + (("OR") (:|r/m16| :|imm16|) (:|o16| #x81 :/1 :|iw|)) + (("OR") (:|r/m8| :|imm8|) (#x80 :/1 :|ib|)) + (("OR") (:|reg32| :|r/m32|) (:|o32| #xB :|/r|)) + (("OR") (:|reg16| :|r/m16|) (:|o16| #xB :|/r|)) + (("OR") (:|reg8| :|r/m8|) (#xA :|/r|)) + (("OR") (:|r/m32| :|reg32|) (:|o32| #x9 :|/r|)) + (("OR") (:|r/m16| :|reg16|) (:|o16| #x9 :|/r|)) + (("OR") (:|r/m8| :|reg8|) (#x8 :|/r|)) + (("NOP") (:|none|) (#x90)) + (("NOT") (:|r/m32|) (:|o32| #xF7 :/2)) + (("NOT") (:|r/m16|) (:|o16| #xF7 :/2)) + (("NOT") (:|r/m8|) (#xF6 :/2)) + (("NEG") (:|r/m32|) (:|o32| #xF7 :/3)) + (("NEG") (:|r/m16|) (:|o16| #xF7 :/3)) + (("NEG") (:|r/m8|) (#xF6 :/3)) + (("MULSS") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #x59 :|/r|)) + (("MULSD") (:|xmm1| :|xmm2/mem32|) (#xF2 #xF #x59 :|/r|)) + (("MULPS") (:|xmm1| :|xmm2/mem128|) (#xF #x59 :|/r|)) + (("MULPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #x59 :|/r|)) + (("MUL") (:|r/m32|) (:|o32| #xF7 :/4)) + (("MUL") (:|r/m16|) (:|o16| #xF7 :/4)) + (("MUL") (:|r/m8|) (#xF6 :/4)) + (("MOVUPS") (:|xmm1/mem128| :|xmm2|) (#xF #x11 :|/r|)) + (("MOVUPS") (:|xmm1| :|xmm2/mem128|) (#xF #x10 :|/r|)) + (("MOVUPD") (:|xmm1/mem128| :|xmm2|) (#x66 #xF #x11 :|/r|)) + (("MOVUPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #x10 :|/r|)) + (("MOVZX") (:|reg32| :|r/m16|) (:|o32| #xF #xB7 :|/r|)) + (("MOVZX") (:|reg32| :|r/m8|) (:|o32| #xF #xB6 :|/r|)) + (("MOVZX") (:|reg16| :|r/m8|) (:|o16| #xF #xB6 :|/r|)) + (("MOVSX") (:|reg32| :|r/m16|) (:|o32| #xF #xBF :|/r|)) + (("MOVSX") (:|reg32| :|r/m8|) (:|o32| #xF #xBE :|/r|)) + (("MOVSX") (:|reg16| :|r/m8|) (:|o16| #xF #xBE :|/r|)) + (("MOVSS") (:|xmm1/m32| :|xmm2|) (#xF3 #xF #x11 :|/r|)) + (("MOVSS") (:|xmm1| :|xmm2/m32|) (#xF3 #xF #x10 :|/r|)) + (("MOVSD") (:|xmm1/m64| :|xmm2|) (#xF2 #xF #x11 :|/r|)) + (("MOVSD") (:|xmm1| :|xmm2/m64|) (#xF2 #xF #x10 :|/r|)) + (("MOVSD") (:|none|) (:|o32| #xA5)) + (("MOVSW") (:|none|) (:|o16| #xA5)) + (("MOVSB") (:|none|) (#xA4)) + (("MOVQ2DQ") (:|xmm| :|mm|) (#xF3 :OF #xD6 :|/r|)) + (("MOVQ") (:|xmm1/m64| :|xmm2|) (#x66 #xF #xD6 :|/r|)) + (("MOVQ") (:|xmm1| :|xmm2/m64|) (#xF3 #xF #x7E :|/r|)) + (("MOVQ") (:|mm1/m64| :|mm2|) (#xF #x7F :|/r|)) + (("MOVQ") (:|mm1| :|mm2/m64|) (#xF #x6F :|/r|)) + (("MOVNTQ") (:|m64| :|mm|) (#xF #xE7 :|/r|)) + (("MOVNTPS") (:|m128| :|xmm|) (#xF #x2B :|/r|)) + (("MOVNTPD") (:|m128| :|xmm|) (#x66 #xF #x2B :|/r|)) + (("MOVNTI") (:|m32| :|reg32|) (#xF #xC3 :|/r|)) + (("MOVNTDQ") (:|m128| :|xmm|) (#x66 #xF #xE7 :|/r|)) + (("MOVMSKPS") (:|reg32| :|xmm|) (#xF #x50 :|/r|)) + (("MOVMSKPD") (:|reg32| :|xmm|) (#x66 #xF #x50 :|/r|)) + (("MOVLPS") (:|m64| :|xmm|) (:OF #x13 :|/r|)) + (("MOVLPS") (:|xmm| :|m64|) (:OF #x12 :|/r|)) + (("MOVLPD") (:|m64| :|xmm|) (#x66 :OF #x13 :|/r|)) + (("MOVLPD") (:|xmm| :|m64|) (#x66 :OF #x12 :|/r|)) + (("MOVLHPS") (:|xmm1| :|xmm2|) (:OF #x16 :|/r|)) + (("MOVHPS") (:|m64| :|xmm|) (#xF #x17 :|/r|)) + (("MOVHPS") (:|xmm| :|m64|) (#xF #x16 :|/r|)) + (("MOVHPD") (:|m64| :|xmm|) (#x66 :OF #x17 :|/r|)) + (("MOVHPD") (:|xmm| :|m64|) (#x66 :OF #x16 :|/r|)) + (("MOVHLPS") (:|xmm1| :|xmm2|) (:OF #x12 :|/r|)) + (("MOVDQU") (:|xmm1/m128| :|xmm2|) (#xF3 :OF #x7F :|/r|)) + (("MOVDQU") (:|xmm1| :|xmm2/m128|) (#xF3 :OF #x6F :|/r|)) + (("MOVDQA") (:|xmm1/m128| :|xmm2|) (#x66 :OF #x7F :|/r|)) + (("MOVDQA") (:|xmm1| :|xmm2/m128|) (#x66 :OF #x6F :|/r|)) + (("MOVDQ2Q") (:|mm| :|xmm|) (#xF2 :OF #xD6 :|/r|)) + (("MOVD") (:|r/m32| :|xmm|) (#x66 #xF #x7E :|/r|)) + (("MOVD") (:|xmm| :|r/m32|) (#x66 #xF #x6E :|/r|)) + (("MOVD") (:|r/m32| :|mm|) (#xF #x7E :|/r|)) + (("MOVD") (:|mm| :|r/m32|) (#xF #x6E :|/r|)) + (("MOVAPS") (:|xmm1/mem128| :|xmm2|) (#xF #x29 :|/r|)) + (("MOVAPS") (:|xmm1| :|xmm2/mem128|) (#xF #x28 :|/r|)) + (("MOVAPD") (:|xmm1/mem128| :|xmm2|) (#x66 #xF #x29 :|/r|)) + (("MOVAPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #x28 :|/r|)) + (("MOV") (:TR3/4/5/6/7 :|reg32|) (#xF #x26 :|/r|)) + (("MOV") (:DR0/1/2/3/6/7 :|reg32|) (#xF #x23 :|/r|)) + (("MOV") (:CR0/2/3/4 :|reg32|) (#xF #x22 :|/r|)) + (("MOV") (:|reg32| :TR3/4/5/6/7) (#xF #x24 :|/r|)) + (("MOV") (:|reg32| :DR0/1/2/3/6/7) (#xF #x21 :|/r|)) + (("MOV") (:|reg32| :CR0/2/3/4) (#xF #x20 :|/r|)) + (("MOV") (:|segreg| :|r/m32|) (:|o32| #x8E :|/r|)) + (("MOV") (:|segreg| :|r/m16|) (:|o16| #x8E :|/r|)) + (("MOV") (:|r/m32| :|segreg|) (:|o32| #x8C :|/r|)) + (("MOV") (:|r/m16| :|segreg|) (:|o16| #x8C :|/r|)) + (("MOV") (:|memoffs32| :|EAX|) (:|o32| #xA3 :|ow/od|)) + (("MOV") (:|memoffs16| :AX) (:|o16| #xA3 :|ow/od|)) + (("MOV") (:|memoffs8| :AL) (#xA2 :|ow/od|)) + (("MOV") (:|EAX| :|memoffs32|) (:|o32| #xA1 :|ow/od|)) + (("MOV") (:AX :|memoffs16|) (:|o16| #xA1 :|ow/od|)) + (("MOV") (:AL :|memoffs8|) (#xA0 :|ow/od|)) + (("MOV") (:|r/m32| :|imm32|) (:|o32| #xC7 :/0 :|id|)) + (("MOV") (:|r/m16| :|imm16|) (:|o16| #xC7 :/0 :|iw|)) + (("MOV") (:|r/m8| :|imm8|) (#xC6 :/0 :|ib|)) + (("MOV") (:|reg32| :|imm32|) (:|o32| #xB8 :|+r| :|id|)) + (("MOV") (:|reg16| :|imm16|) (:|o16| #xB8 :|+r| :|iw|)) + (("MOV") (:|reg8| :|imm8|) (#xB0 :|+r| :|ib|)) + (("MOV") (:|reg32| :|r/m32|) (:|o32| #x8B :|/r|)) + (("MOV") (:|reg16| :|r/m16|) (:|o16| #x8B :|/r|)) + (("MOV") (:|reg8| :|r/m8|) (#x8A :|/r|)) + (("MOV") (:|r/m32| :|reg32|) (:|o32| #x89 :|/r|)) + (("MOV") (:|r/m16| :|reg16|) (:|o16| #x89 :|/r|)) + (("MOV") (:|r/m8| :|reg8|) (#x88 :|/r|)) + (("MINSS") (:|xmm1| :|xmm2/m32|) (#xF3 #xF #x5D :|/r|)) + (("MINSD") (:|xmm1| :|xmm2/m64|) (#xF2 #xF #x5D :|/r|)) + (("MINPS") (:|xmm1| :|xmm2/m128|) (#xF #x5D :|/r|)) + (("MINPD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x5D :|/r|)) + (("MFENCE") (:|none|) (#xF #xAE :/6)) + (("MAXSS") (:|xmm1| :|xmm2/m32|) (#xF3 #xF #x5F :|/r|)) + (("MAXSD") (:|xmm1| :|xmm2/m64|) (#xF2 #xF #x5F :|/r|)) + (("MAXPS") (:|xmm1| :|xmm2/m128|) (#xF #x5F :|/r|)) + (("MAXPD") (:|xmm1| :|xmm2/m128|) (#x66 #xF #x5F :|/r|)) + (("MASKMOVQ") (:|mm1| :|mm2|) (#xF #xF7 :|/r|)) + (("MASKMOVDQU") (:|xmm1| :|xmm2|) (#x66 #xF #xF7 :|/r|)) + (("LTR") (:|r/m16|) (#xF #x0 :/3)) + (("LSL") (:|reg32| :|r/m32|) (:|o32| #xF #x3 :|/r|)) + (("LSL") (:|reg16| :|r/m16|) (:|o16| #xF #x3 :|/r|)) + (("LOOPNZ") (:|imm| :|ECX|) (#xA32 #xE0 :|rb|)) + (("LOOPNZ") (:|imm| :CX) (#xA16 #xE0 :|rb|)) + (("LOOPNZ") (:|imm|) (#xE0 :|rb|)) + (("LOOPNE") (:|imm| :|ECX|) (#xA32 #xE0 :|rb|)) + (("LOOPNE") (:|imm| :CX) (#xA16 #xE0 :|rb|)) + (("LOOPNE") (:|imm|) (#xE0 :|rb|)) + (("LOOPZ") (:|imm| :|ECX|) (#xA32 #xE1 :|rb|)) + (("LOOPZ") (:|imm| :CX) (#xA16 #xE1 :|rb|)) + (("LOOPZ") (:|imm|) (#xE1 :|rb|)) + (("LOOPE") (:|imm| :|ECX|) (#xA32 #xE1 :|rb|)) + (("LOOPE") (:|imm| :CX) (#xA16 #xE1 :|rb|)) + (("LOOPE") (:|imm|) (#xE1 :|rb|)) + (("LOOP") (:|imm| :|ECX|) (#xA32 #xE2 :|rb|)) + (("LOOP") (:|imm| :CX) (#xA16 #xE2 :|rb|)) + (("LOOP") (:|imm|) (#xE2 :|rb|)) + (("LODSD") (:|none|) (:|o32| #xAD)) + (("LODSW") (:|none|) (:|o16| #xAD)) + (("LODSB") (:|none|) (#xAC)) + (("LOADALL286") (:|none|) (#xF #x5)) + (("LOADALL") (:|none|) (#xF #x7)) + (("LMSW") (:|r/m16|) (#xF #x1 :/6)) + (("LLDT") (:|r/m16|) (#xF #x0 :/2)) + (("LIDT") (:|mem|) (#xF #x1 :/3)) + (("LGDT") (:|mem|) (#xF #x1 :/2)) + (("LFENCE") (:|none|) (#xF #xAE :/5)) + (("LEAVE") (:|none|) (#xC9)) + (("LEA") (:|reg32| :|mem|) (:|o32| #x8D :|/r|)) + (("LEA") (:|reg16| :|mem|) (:|o16| #x8D :|/r|)) + (("LSS") (:|reg32| :|mem|) (:|o32| #xF #xB2 :|/r|)) + (("LSS") (:|reg16| :|mem|) (:|o16| #xF #xB2 :|/r|)) + (("LGS") (:|reg32| :|mem|) (:|o32| #xF #xB5 :|/r|)) + (("LGS") (:|reg16| :|mem|) (:|o16| #xF #xB5 :|/r|)) + (("LFS") (:|reg32| :|mem|) (:|o32| #xF #xB4 :|/r|)) + (("LFS") (:|reg16| :|mem|) (:|o16| #xF #xB4 :|/r|)) + (("LES") (:|reg32| :|mem|) (:|o32| #xC4 :|/r|)) + (("LES") (:|reg16| :|mem|) (:|o16| #xC4 :|/r|)) + (("LDS") (:|reg32| :|mem|) (:|o32| #xC5 :|/r|)) + (("LDS") (:|reg16| :|mem|) (:|o16| #xC5 :|/r|)) + (("LDMXCSR") (:|mem32|) (#xF #xAE :/2)) + (("LAR") (:|reg32| :|r/m32|) (:|o32| #xF #x2 :|/r|)) + (("LAR") (:|reg16| :|r/m16|) (:|o16| #xF #x2 :|/r|)) + (("LAHF") (:|none|) (#x9F)) + (("JMP") (:|r/m32|) (:|o32| #xFF :/4)) + (("JMP") (:|r/m16|) (:|o16| #xFF :/4)) + (("JMP" "FAR") (:|mem32|) (:|o32| #xFF :/5)) + (("JMP" "FAR") (:|mem|) (:|o16| #xFF :/5)) + (("JMP") (:|imm:imm32|) (:|o32| #xEA :|id| :|iw|)) + (("JMP") (:|imm:imm16|) (:|o16| #xEA :|iw| :|iw|)) + (("JMP" "SHORT") (:|imm|) (#xEB :|rb|)) + (("JMP") (:|imm|) (#xE9 :|rw/rd|)) + (("JECXZ") (:|imm|) (#xA32 #xE3 :|rb|)) + (("JCXZ") (:|imm|) (#xA16 #xE3 :|rb|)) + ;; (("Jcc" "NEAR") (:|imm|) (#xF #x80 :|+cc| :|rw/rd|)) + ;; (("Jcc") (:|imm|) (#x70 :|+cc| :|rb|)) + (("IRETD") (:|none|) (:|o32| #xCF)) + (("IRETW") (:|none|) (:|o16| #xCF)) + (("IRET") (:|none|) (#xCF)) + (("INVLPG") (:|mem|) (#xF #x1 :/7)) + (("INVD") (:|none|) (#xF #x8)) + (("INTO") (:|none|) (#xCE)) + (("INT03") (:|none|) (#xCC)) + (("INT3") (:|none|) (#xCC)) + (("INT01") (:|none|) (#xF1)) + (("ICEBP") (:|none|) (#xF1)) + (("INT1") (:|none|) (#xF1)) + (("INT") (:|imm8|) (#xCD :|ib|)) + (("INSD") (:|none|) (:|o32| #x6D)) + (("INSW") (:|none|) (:|o16| #x6D)) + (("INSB") (:|none|) (#x6C)) + (("INC") (:|r/m32|) (:|o32| #xFF :/0)) + (("INC") (:|r/m16|) (:|o16| #xFF :/0)) + (("INC") (:|r/m8|) (#xFE :/0)) + (("INC") (:|reg32|) (:|o32| #x40 :|+r|)) + (("INC") (:|reg16|) (:|o16| #x40 :|+r|)) + (("IN") (:|EAX| :DX) (:|o32| #xED)) + (("IN") (:AX :DX) (:|o16| #xED)) + (("IN") (:AL :DX) (#xEC)) + (("IN") (:|EAX| :|imm8|) (:|o32| #xE5 :|ib|)) + (("IN") (:AX :|imm8|) (:|o16| #xE5 :|ib|)) + (("IN") (:AL :|imm8|) (#xE4 :|ib|)) + (("IMUL") (:|reg32| :|r/m32| :|imm32|) (:|o32| #x69 :|/r| :|id|)) + (("IMUL") (:|reg32| :|r/m32| :|imm8|) (:|o32| #x6B :|/r| :|ib|)) + (("IMUL") (:|reg16| :|r/m16| :|imm16|) (:|o16| #x69 :|/r| :|iw|)) + (("IMUL") (:|reg16| :|r/m16| :|imm8|) (:|o16| #x6B :|/r| :|ib|)) + (("IMUL") (:|reg32| :|imm32|) (:|o32| #x69 :|/r| :|id|)) + (("IMUL") (:|reg32| :|imm8|) (:|o32| #x6B :|/r| :|ib|)) + (("IMUL") (:|reg16| :|imm16|) (:|o16| #x69 :|/r| :|iw|)) + (("IMUL") (:|reg16| :|imm8|) (:|o16| #x6B :|/r| :|ib|)) + (("IMUL") (:|reg32| :|r/m32|) (:|o32| #xF #xAF :|/r|)) + (("IMUL") (:|reg16| :|r/m16|) (:|o16| #xF #xAF :|/r|)) + (("IMUL") (:|r/m32|) (:|o32| #xF7 :/5)) + (("IMUL") (:|r/m16|) (:|o16| #xF7 :/5)) + (("IMUL") (:|r/m8|) (#xF6 :/5)) + (("IDIV") (:|r/m32|) (:|o32| #xF7 :/7)) + (("IDIV") (:|r/m16|) (:|o16| #xF7 :/7)) + (("IDIV") (:|r/m8|) (#xF6 :/7)) + (("IBTS") (:|r/m32| :|reg32|) (:|o32| #xF #xA7 :|/r|)) + (("IBTS") (:|r/m16| :|reg16|) (:|o16| #xF #xA7 :|/r|)) + (("HLT") (:|none|) (#xF4)) + (("FYL2XP1") (:|none|) (#xD9 #xF9)) + (("FYL2X") (:|none|) (#xD9 #xF1)) + (("FXTRACT") (:|none|) (#xD9 #xF4)) + (("FXSAVE") (:|memory|) (#xF #xAE :/0)) + (("FXRSTOR") (:|memory|) (#xF #xAE :/1)) + (("FXCH") (:ST0 :|fpureg|) (#xD9 #xC8 :|+r|)) + (("FXCH") (:|fpureg| :ST0) (#xD9 #xC8 :|+r|)) + (("FXCH") (:|fpureg|) (#xD9 #xC8 :|+r|)) + (("FXCH") (:|none|) (#xD9 #xC9)) + (("FXAM") (:|none|) (#xD9 #xE5)) + (("FUCOMIP") (:ST0 :|fpureg|) (#xDF #xE8 :|+r|)) + (("FUCOMIP") (:|fpureg|) (#xDF #xE8 :|+r|)) + (("FUCOMI") (:ST0 :|fpureg|) (#xDB #xE8 :|+r|)) + (("FUCOMI") (:|fpureg|) (#xDB #xE8 :|+r|)) + (("FUCOMPP") (:|none|) (#xDA #xE9)) + (("FUCOMP") (:ST0 :|fpureg|) (#xDD #xE8 :|+r|)) + (("FUCOMP") (:|fpureg|) (#xDD #xE8 :|+r|)) + (("FUCOM") (:ST0 :|fpureg|) (#xDD #xE0 :|+r|)) + (("FUCOM") (:|fpureg|) (#xDD #xE0 :|+r|)) + (("FTST") (:|none|) (#xD9 #xE4)) + (("FSUBRP") (:|fpureg| :ST0) (#xDE #xE0 :|+r|)) + (("FSUBRP") (:|fpureg|) (#xDE #xE0 :|+r|)) + (("FSUBP") (:|fpureg| :ST0) (#xDE #xE8 :|+r|)) + (("FSUBP") (:|fpureg|) (#xDE #xE8 :|+r|)) + (("FSUBR") (:|fpureg| :ST0) (#xDC #xE0 :|+r|)) + (("FSUBR" "TO") (:|fpureg|) (#xDC #xE0 :|+r|)) + (("FSUBR") (:ST0 :|fpureg|) (#xD8 #xE8 :|+r|)) + (("FSUBR") (:|fpureg|) (#xD8 #xE8 :|+r|)) + (("FSUBR") (:|mem64|) (#xDC :/5)) + (("FSUBR") (:|mem32|) (#xD8 :/5)) + (("FSUB") (:|fpureg| :ST0) (#xDC #xE8 :|+r|)) + (("FSUB" "TO") (:|fpureg|) (#xDC #xE8 :|+r|)) + (("FSUB") (:ST0 :|fpureg|) (#xD8 #xE0 :|+r|)) + (("FSUB") (:|fpureg|) (#xD8 #xE0 :|+r|)) + (("FSUB") (:|mem64|) (#xDC :/4)) + (("FSUB") (:|mem32|) (#xD8 :/4)) + (("FNSTSW") (:AX) (#xDF #xE0)) + (("FNSTSW") (:|mem16|) (#xDD :/7)) + (("FSTSW") (:AX) (#x9B #xDF #xE0)) + (("FSTSW") (:|mem16|) (#x9B #xDD :/7)) + (("FNSTENV") (:|mem|) (#xD9 :/6)) + (("FSTENV") (:|mem|) (#x9B #xD9 :/6)) + (("FNSTCW") (:|mem16|) (#xD9 :/7)) + (("FSTCW") (:|mem16|) (#x9B #xD9 :/7)) + (("FSTP") (:|fpureg|) (#xDD #xD8 :|+r|)) + (("FSTP") (:|mem80|) (#xDB :/7)) + (("FSTP") (:|mem64|) (#xDD :/3)) + (("FSTP") (:|mem32|) (#xD9 :/3)) + (("FST") (:|fpureg|) (#xDD #xD0 :|+r|)) + (("FST") (:|mem64|) (#xDD :/2)) + (("FST") (:|mem32|) (#xD9 :/2)) + (("FSQRT") (:|none|) (#xD9 #xFA)) + (("FSINCOS") (:|none|) (#xD9 #xFB)) + (("FSIN") (:|none|) (#xD9 #xFE)) + (("FSETPM") (:|none|) (#xDB #xE4)) + (("FSCALE") (:|none|) (#xD9 #xFD)) + (("FRSTOR") (:|mem|) (#xDD :/4)) + (("FNSAVE") (:|mem|) (#xDD :/6)) + (("FSAVE") (:|mem|) (#x9B #xDD :/6)) + (("FRNDINT") (:|none|) (#xD9 #xFC)) + (("FPREM1") (:|none|) (#xD9 #xF5)) + (("FPREM") (:|none|) (#xD9 #xF8)) + (("FPTAN") (:|none|) (#xD9 #xF2)) + (("FPATAN") (:|none|) (#xD9 #xF3)) + (("FNOP") (:|none|) (#xD9 #xD0)) + (("FMULP") (:|fpureg| :ST0) (#xDE #xC8 :|+r|)) + (("FMULP") (:|fpureg|) (#xDE #xC8 :|+r|)) + (("FMUL") (:|fpureg| :ST0) (#xDC #xC8 :|+r|)) + (("FMUL" "TO") (:|fpureg|) (#xDC #xC8 :|+r|)) + (("FMUL") (:ST0 :|fpureg|) (#xD8 #xC8 :|+r|)) + (("FMUL") (:|fpureg|) (#xD8 #xC8 :|+r|)) + (("FMUL") (:|mem64|) (#xDC :/1)) + (("FMUL") (:|mem32|) (#xD8 :/1)) + (("FLDENV") (:|mem|) (#xD9 :/4)) + (("FLDCW") (:|mem16|) (#xD9 :/5)) + (("FLDZ") (:|none|) (#xD9 #xEE)) + (("FLDPI") (:|none|) (#xD9 #xEB)) + (("FLDLN2") (:|none|) (#xD9 #xED)) + (("FLDLG2") (:|none|) (#xD9 #xEC)) + (("FLDL2T") (:|none|) (#xD9 #xE9)) + (("FLDL2E") (:|none|) (#xD9 #xEA)) + (("FLD1") (:|none|) (#xD9 #xE8)) + (("FLD") (:|fpureg|) (#xD9 #xC0 :|+r|)) + (("FLD") (:|mem80|) (#xDB :/5)) + (("FLD") (:|mem64|) (#xDD :/0)) + (("FLD") (:|mem32|) (#xD9 :/0)) + (("FISUBR") (:|mem32|) (#xDA :/5)) + (("FISUBR") (:|mem16|) (#xDE :/5)) + (("FISUB") (:|mem32|) (#xDA :/4)) + (("FISUB") (:|mem16|) (#xDE :/4)) + (("FNINIT") (:|none|) (#xDB #xE3)) + (("FINIT") (:|none|) (#x9B #xDB #xE3)) + (("FINCSTP") (:|none|) (#xD9 #xF7)) + (("FIMUL") (:|mem32|) (#xDA :/1)) + (("FIMUL") (:|mem16|) (#xDE :/1)) + (("FISTP") (:|mem64|) (#xDF :/7)) + (("FISTP") (:|mem32|) (#xDB :/3)) + (("FISTP") (:|mem16|) (#xDF :/3)) + (("FIST") (:|mem32|) (#xDB :/2)) + (("FIST") (:|mem16|) (#xDF :/2)) + (("FILD") (:|mem64|) (#xDF :/5)) + (("FILD") (:|mem32|) (#xDB :/0)) + (("FILD") (:|mem16|) (#xDF :/0)) + (("FIDIVR") (:|mem32|) (#xDA :/7)) + (("FIDIVR") (:|mem16|) (#xDE :/7)) + (("FIDIV") (:|mem32|) (#xDA :/6)) + (("FIDIV") (:|mem16|) (#xDE :/6)) + (("FICOMP") (:|mem32|) (#xDA :/3)) + (("FICOMP") (:|mem16|) (#xDE :/3)) + (("FICOM") (:|mem32|) (#xDA :/2)) + (("FICOM") (:|mem16|) (#xDE :/2)) + (("FIADD") (:|mem32|) (#xDA :/0)) + (("FIADD") (:|mem16|) (#xDE :/0)) + (("FFREEP") (:|fpureg|) (#xDF #xC0 :|+r|)) + (("FFREE") (:|fpureg|) (#xDD #xC0 :|+r|)) + (("FEMMS") (:|none|) (#xF #xE)) + (("FDIVRP") (:|fpureg| :ST0) (#xDE #xF0 :|+r|)) + (("FDIVRP") (:|fpureg|) (#xDE #xF0 :|+r|)) + (("FDIVP") (:|fpureg| :ST0) (#xDE #xF8 :|+r|)) + (("FDIVP") (:|fpureg|) (#xDE #xF8 :|+r|)) + (("FDIVR") (:|fpureg| :ST0) (#xDC #xF0 :|+r|)) + (("FDIVR" "TO") (:|fpureg|) (#xDC #xF0 :|+r|)) + (("FDIVR") (:ST0 :|fpureg|) (#xD8 #xF8 :|+r|)) + (("FDIVR") (:|fpureg|) (#xD8 #xF8 :|+r|)) + (("FDIVR") (:|mem64|) (#xDC :/0)) + (("FDIVR") (:|mem32|) (#xD8 :/0)) + (("FDIV") (:|fpureg| :ST0) (#xDC #xF8 :|+r|)) + (("FDIV" "TO") (:|fpureg|) (#xDC #xF8 :|+r|)) + (("FDIV") (:ST0 :|fpureg|) (#xD8 #xF0 :|+r|)) + (("FDIV") (:|fpureg|) (#xD8 #xF0 :|+r|)) + (("FDIV") (:|mem64|) (#xDC :/6)) + (("FDIV") (:|mem32|) (#xD8 :/6)) + (("FNENI") (:|none|) (#xDB #xE0)) + (("FENI") (:|none|) (#x9B #xDB #xE0)) + (("FNDISI") (:|none|) (#xDB #xE1)) + (("FDISI") (:|none|) (#x9B #xDB #xE1)) + (("FDECSTP") (:|none|) (#xD9 #xF6)) + (("FCOS") (:|none|) (#xD9 #xFF)) + (("FCOMIP") (:ST0 :|fpureg|) (#xDF #xF0 :|+r|)) + (("FCOMIP") (:|fpureg|) (#xDF #xF0 :|+r|)) + (("FCOMI") (:ST0 :|fpureg|) (#xDB #xF0 :|+r|)) + (("FCOMI") (:|fpureg|) (#xDB #xF0 :|+r|)) + (("FCOMPP") (:|none|) (#xDE #xD9)) + (("FCOMP") (:ST0 :|fpureg|) (#xD8 #xD8 :|+r|)) + (("FCOMP") (:|fpureg|) (#xD8 #xD8 :|+r|)) + (("FCOMP") (:|mem64|) (#xDC :/3)) + (("FCOMP") (:|mem32|) (#xD8 :/3)) + (("FCOM") (:ST0 :|fpureg|) (#xD8 #xD0 :|+r|)) + (("FCOM") (:|fpureg|) (#xD8 #xD0 :|+r|)) + (("FCOM") (:|mem64|) (#xDC :/2)) + (("FCOM") (:|mem32|) (#xD8 :/2)) + (("FCMOVNU") (:ST0 :|fpureg|) (#xDB #xD8 :|+r|)) + (("FCMOVNU") (:|fpureg|) (#xDB #xD8 :|+r|)) + (("FCMOVNBE") (:ST0 :|fpureg|) (#xDB #xD0 :|+r|)) + (("FCMOVNBE") (:|fpureg|) (#xDB #xD0 :|+r|)) + (("FCMOVNE") (:ST0 :|fpureg|) (#xDB #xC8 :|+r|)) + (("FCMOVNE") (:|fpureg|) (#xDB #xC8 :|+r|)) + (("FCMOVNB") (:ST0 :|fpureg|) (#xDB #xC0 :|+r|)) + (("FCMOVNB") (:|fpureg|) (#xDB #xC0 :|+r|)) + (("FCMOVU") (:ST0 :|fpureg|) (#xDA #xD8 :|+r|)) + (("FCMOVU") (:|fpureg|) (#xDA #xD8 :|+r|)) + (("FCMOVBE") (:ST0 :|fpureg|) (#xDA #xD0 :|+r|)) + (("FCMOVBE") (:|fpureg|) (#xDA #xD0 :|+r|)) + (("FCMOVE") (:ST0 :|fpureg|) (#xDA #xC8 :|+r|)) + (("FCMOVE") (:|fpureg|) (#xDA #xC8 :|+r|)) + (("FCMOVB") (:ST0 :|fpureg|) (#xDA #xC0 :|+r|)) + (("FCMOVB") (:|fpureg|) (#xDA #xC0 :|+r|)) + (("FNCLEX") (:|none|) (#xDB #xE2)) + (("FCLEX") (:|none|) (#x9B #xDB #xE2)) + (("FCHS") (:|none|) (#xD9 #xE0)) + (("FBSTP") (:|mem80|) (#xDF :/6)) + (("FBLD") (:|mem80|) (#xDF :/4)) + (("FADDP") (:|fpureg| :ST0) (#xDE #xC0 :|+r|)) + (("FADDP") (:|fpureg|) (#xDE #xC0 :|+r|)) + (("FADD") (:|fpureg| :ST0) (#xDC #xC0 :|+r|)) + (("FADD" "TO") (:|fpureg|) (#xDC #xC0 :|+r|)) + (("FADD") (:ST0 :|fpureg|) (#xD8 #xC0 :|+r|)) + (("FADD") (:|fpureg|) (#xD8 #xC0 :|+r|)) + (("FADD") (:|mem64|) (#xDC :/0)) + (("FADD") (:|mem32|) (#xD8 :/0)) + (("FABS") (:|none|) (#xD9 #xE1)) + (("F2XM1") (:|none|) (#xD9 #xF0)) + (("ENTER") (:|imm| :|imm|) (#xC8 :|iw| :|ib|)) + (("EMMS") (:|none|) (#xF #x77)) + (("DIVSS") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #x5E :|/r|)) + (("DIVSD") (:|xmm1| :|xmm2/mem64|) (#xF2 #xF #x5E :|/r|)) + (("DIVPS") (:|xmm1| :|xmm2/mem128|) (#xF #x5E :|/r|)) + (("DIVPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #x5E :|/r|)) + (("DIV") (:|r/m32|) (:|o32| #xF7 :/6)) + (("DIV") (:|r/m16|) (:|o16| #xF7 :/6)) + (("DIV") (:|r/m8|) (#xF6 :/6)) + (("DEC") (:|r/m32|) (:|o32| #xFF :/1)) + (("DEC") (:|r/m16|) (:|o16| #xFF :/1)) + (("DEC") (:|r/m8|) (#xFE :/1)) + (("DEC") (:|reg32|) (:|o32| #x48 :|+r|)) + (("DEC") (:|reg16|) (:|o16| #x48 :|+r|)) + (("DAS") (:|none|) (#x2F)) + (("DAA") (:|none|) (#x27)) + (("CVTTSD2SI") (:|reg32| :|xmm/mem32|) (#xF3 #xF #x2C :|/r|)) + (("CVTTSD2SI") (:|reg32| :|xmm/mem64|) (#xF2 #xF #x2C :|/r|)) + (("CVTTPS2PI") (:|mm| :|xmm/mem64|) (#xF #x2C :|/r|)) + (("CVTTPS2DQ") (:|xmm1| :|xmm2/mem128|) (#xF3 #xF #x5B :|/r|)) + (("CVTTPD2PI") (:|mm| :|xmm/mem128|) (#x66 #xF #x2C :|/r|)) + (("CVTTPD2DQ") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #xE6 :|/r|)) + (("CVTSS2SI") (:|reg32| :|xmm/mem32|) (#xF3 #xF #x2D :|/r|)) + (("CVTSS2SD") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #x5A :|/r|)) + (("CVTSI2SS") (:|xmm| :|r/m32|) (#xF3 #xF #x2A :|/r|)) + (("CVTSI2SD") (:|xmm| :|r/m32|) (#xF2 #xF #x2A :|/r|)) + (("CVTSD2SS") (:|xmm1| :|xmm2/mem64|) (#xF2 #xF #x5A :|/r|)) + (("CVTSD2SI") (:|reg32| :|xmm/mem64|) (#xF2 #xF #x2D :|/r|)) + (("CVTPS2PI") (:|mm| :|xmm/mem64|) (#xF #x2D :|/r|)) + (("CVTPS2PD") (:|xmm1| :|xmm2/mem64|) (#xF #x5A :|/r|)) + (("CVTPS2DQ") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #x5B :|/r|)) + (("CVTPI2PS") (:|xmm| :|mm/mem64|) (#xF #x2A :|/r|)) + (("CVTPI2PD") (:|xmm| :|mm/mem64|) (#x66 #xF #x2A :|/r|)) + (("CVTPD2PS") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #x5A :|/r|)) + (("CVTPD2PI") (:|mm| :|xmm/mem128|) (#x66 #xF #x2D :|/r|)) + (("CVTPD2DQ") (:|xmm1| :|xmm2/mem128|) (#xF2 #xF #xE6 :|/r|)) + (("CVTDQ2PS") (:|xmm1| :|xmm2/mem128|) (#xF #x5B :|/r|)) + (("CVTDQ2PD") (:|xmm1| :|xmm2/mem64|) (#xF3 #xF #xE6 :|/r|)) + (("CPUID") (:|none|) (#xF #xA2)) + (("COMISS") (:|xmm1| :|xmm2/mem32|) (#x66 #xF #x2F :|/r|)) + (("COMISD") (:|xmm1| :|xmm2/mem64|) (#x66 #xF #x2F :|/r|)) + (("CMPXCHG8B") (:|mem|) (#xF #xC7 :/1)) + (("CMPXCHG486") (:|r/m32| :|reg32|) (:|o32| #xF #xA7 :|/r|)) + (("CMPXCHG486") (:|r/m16| :|reg16|) (:|o16| #xF #xA7 :|/r|)) + (("CMPXCHG486") (:|r/m8| :|reg8|) (#xF #xA6 :|/r|)) + (("CMPXCHG") (:|r/m32| :|reg32|) (:|o32| #xF #xB1 :|/r|)) + (("CMPXCHG") (:|r/m16| :|reg16|) (:|o16| #xF #xB1 :|/r|)) + (("CMPXCHG") (:|r/m8| :|reg8|) (#xF #xB0 :|/r|)) + (("CMPORDSS") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #xC2 :|/r| #x7)) + (("CMPNLESS") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #xC2 :|/r| #x6)) + (("CMPNLTSS") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #xC2 :|/r| #x5)) + (("CMPNEQSS") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #xC2 :|/r| #x4)) + (("CMPUNORDSS") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #xC2 :|/r| #x3)) + (("CMPLESS") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #xC2 :|/r| #x2)) + (("CMPLTSS") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #xC2 :|/r| #x1)) + (("CMPEQSS") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #xC2 :|/r| #x0)) + (("CMPSS") (:|xmm1| :|xmm2/mem32| :|imm8|) (#xF3 #xF #xC2 :|/r| :|ib|)) + (("CMPORDSD") (:|xmm1| :|xmm2/mem64|) (#xF2 #xF #xC2 :|/r| #x7)) + (("CMPNLESD") (:|xmm1| :|xmm2/mem64|) (#xF2 #xF #xC2 :|/r| #x6)) + (("CMPNLTSD") (:|xmm1| :|xmm2/mem64|) (#xF2 #xF #xC2 :|/r| #x5)) + (("CMPNEQSD") (:|xmm1| :|xmm2/mem64|) (#xF2 #xF #xC2 :|/r| #x4)) + (("CMPUNORDSD") (:|xmm1| :|xmm2/mem64|) (#xF2 #xF #xC2 :|/r| #x3)) + (("CMPLESD") (:|xmm1| :|xmm2/mem64|) (#xF2 #xF #xC2 :|/r| #x2)) + (("CMPLTSD") (:|xmm1| :|xmm2/mem64|) (#xF2 #xF #xC2 :|/r| #x1)) + (("CMPEQSD") (:|xmm1| :|xmm2/mem64|) (#xF2 #xF #xC2 :|/r| #x0)) + (("CMPSD") (:|xmm1| :|xmm2/mem64| :|imm8|) (#xF2 #xF #xC2 :|/r| :|ib|)) + (("CMPSD") (:|none|) (:|o32| #xA7)) + (("CMPSW") (:|none|) (:|o16| #xA7)) + (("CMPSB") (:|none|) (#xA6)) + (("CMPORDPS") (:|xmm1| :|xmm2/mem128|) (#xF #xC2 :|/r| #x7)) + (("CMPNLEPS") (:|xmm1| :|xmm2/mem128|) (#xF #xC2 :|/r| #x6)) + (("CMPNLTPS") (:|xmm1| :|xmm2/mem128|) (#xF #xC2 :|/r| #x5)) + (("CMPNEQPS") (:|xmm1| :|xmm2/mem128|) (#xF #xC2 :|/r| #x4)) + (("CMPUNORDPS") (:|xmm1| :|xmm2/mem128|) (#xF #xC2 :|/r| #x3)) + (("CMPLEPS") (:|xmm1| :|xmm2/mem128|) (#xF #xC2 :|/r| #x2)) + (("CMPLTPS") (:|xmm1| :|xmm2/mem128|) (#xF #xC2 :|/r| #x1)) + (("CMPEQPS") (:|xmm1| :|xmm2/mem128|) (#xF #xC2 :|/r| #x0)) + (("CMPPS") (:|xmm1| :|xmm2/mem128| :|imm8|) (#xF #xC2 :|/r| :|ib|)) + (("CMPORDPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #xC2 :|/r| #x7)) + (("CMPNLEPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #xC2 :|/r| #x6)) + (("CMPNLTPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #xC2 :|/r| #x5)) + (("CMPNEQPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #xC2 :|/r| #x4)) + (("CMPUNORDPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #xC2 :|/r| #x3)) + (("CMPLEPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #xC2 :|/r| #x2)) + (("CMPLTPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #xC2 :|/r| #x1)) + (("CMPEQPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #xC2 :|/r| #x0)) + (("CMPPD") (:|xmm1| :|xmm2/mem128| :|imm8|) (#x66 #xF #xC2 :|/r| :|ib|)) + (("CMP") (:|EAX| :|imm32|) (:|o32| #x3D :|id|)) + (("CMP") (:AX :|imm16|) (:|o16| #x3D :|iw|)) + (("CMP") (:AL :|imm8|) (#x3C :|ib|)) + (("CMP") (:|r/m32| :|imm8|) (:|o32| #x83 :/0 :|ib|)) + (("CMP") (:|r/m16| :|imm8|) (:|o16| #x83 :/0 :|ib|)) + (("CMP") (:|r/m32| :|imm32|) (:|o32| #x81 :/0 :|id|)) + (("CMP") (:|r/m16| :|imm16|) (:|o16| #x81 :/0 :|iw|)) + (("CMP") (:|r/m8| :|imm8|) (#x80 :/0 :|ib|)) + (("CMP") (:|reg32| :|r/m32|) (:|o32| #x3B :|/r|)) + (("CMP") (:|reg16| :|r/m16|) (:|o16| #x3B :|/r|)) + (("CMP") (:|reg8| :|r/m8|) (#x3A :|/r|)) + (("CMP") (:|r/m32| :|reg32|) (:|o32| #x39 :|/r|)) + (("CMP") (:|r/m16| :|reg16|) (:|o16| #x39 :|/r|)) + (("CMP") (:|r/m8| :|reg8|) (#x38 :|/r|)) + ;; (("CMOVcc") (:|reg32| :|r/m32|) (:|o32| #xF #x40 :|+cc| :|/r|)) + ;; (("CMOVcc") (:|reg16| :|r/m16|) (:|o16| #xF #x40 :|+cc| :|/r|)) + (("CMC") (:|none|) (#xF5)) + (("CLFLUSH") (:|mem|) (#xF #xAE :/7)) + (("CLTS") (:|none|) (#xF #x6)) + (("CLI") (:|none|) (#xFA)) + (("CLD") (:|none|) (#xFC)) + (("CLC") (:|none|) (#xF8)) + (("CDQ") (:|none|) (:|o32| #x99)) + (("CWD") (:|none|) (:|o16| #x99)) + (("CWDE") (:|none|) (:|o32| #x98)) + (("CBW") (:|none|) (:|o16| #x98)) + (("CALL") (:|r/m32|) (:|o32| #xFF :/2)) + (("CALL") (:|r/m16|) (:|o16| #xFF :/2)) + (("CALL" "FAR") (:|mem32|) (:|o32| #xFF :/3)) + (("CALL" "FAR") (:|mem16|) (:|o16| #xFF :/3)) + (("CALL") (:|imm:imm32|) (:|o32| #x9A :|id| :|iw|)) + (("CALL") (:|imm:imm16|) (:|o16| #x9A :|iw| :|iw|)) + (("CALL") (:|imm|) (#xE8 :|rw/rd|)) + (("BTS") (:|r/m32| :|imm|) (:|o32| #xF #xBA :/5 :|ib|)) + (("BTS") (:|r/m16| :|imm|) (:|o16| #xF #xBA :/5 :|ib|)) + (("BTS") (:|r/m32| :|reg32|) (:|o32| #xF #xAB :|/r|)) + (("BTS") (:|r/m16| :|reg16|) (:|o16| #xF #xAB :|/r|)) + (("BTR") (:|r/m32| :|imm8|) (:|o32| #xF #xBA :/6 :|ib|)) + (("BTR") (:|r/m16| :|imm8|) (:|o16| #xF #xBA :/6 :|ib|)) + (("BTR") (:|r/m32| :|reg32|) (:|o32| #xF #xB3 :|/r|)) + (("BTR") (:|r/m16| :|reg16|) (:|o16| #xF #xB3 :|/r|)) + (("BTC") (:|r/m32| :|imm8|) (:|o32| #xF #xBA :/7 :|ib|)) + (("BTC") (:|r/m16| :|imm8|) (:|o16| #xF #xBA :/7 :|ib|)) + (("BTC") (:|r/m32| :|reg32|) (:|o32| #xF #xBB :|/r|)) + (("BTC") (:|r/m16| :|reg16|) (:|o16| #xF #xBB :|/r|)) + (("BT") (:|r/m32| :|imm8|) (:|o32| #xF #xBA :/4 :|ib|)) + (("BT") (:|r/m16| :|imm8|) (:|o16| #xF #xBA :/4 :|ib|)) + (("BT") (:|r/m32| :|reg32|) (:|o32| #xF #xA3 :|/r|)) + (("BT") (:|r/m16| :|reg16|) (:|o16| #xF #xA3 :|/r|)) + (("BSWAP") (:|reg32|) (:|o32| #xF #xC8 :|+r|)) + (("BSR") (:|reg32| :|r/m32|) (:|o32| #xF #xBD :|/r|)) + (("BSR") (:|reg16| :|r/m16|) (:|o16| #xF #xBD :|/r|)) + (("BSF") (:|reg32| :|r/m32|) (:|o32| #xF #xBC :|/r|)) + (("BSF") (:|reg16| :|r/m16|) (:|o16| #xF #xBC :|/r|)) + (("BOUND") (:|reg32| :|mem|) (:|o32| #x62 :|/r|)) + (("BOUND") (:|reg16| :|mem|) (:|o16| #x62 :|/r|)) + (("ARPL") (:|r/m16| :|reg16|) (#x63 :|/r|)) + (("ANDPS") (:|xmm1| :|xmm2/mem128|) (#xF #x54 :|/r|)) + (("ANDPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #x54 :|/r|)) + (("ANDNPS") (:|xmm1| :|xmm2/mem128|) (#xF #x55 :|/r|)) + (("ANDNPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #x55 :|/r|)) + (("AND") (:|EAX| :|imm32|) (:|o32| #x25 :|id|)) + (("AND") (:AX :|imm16|) (:|o16| #x25 :|iw|)) + (("AND") (:AL :|imm8|) (#x24 :|ib|)) + (("AND") (:|r/m32| :|imm8|) (:|o32| #x83 :/4 :|ib|)) + (("AND") (:|r/m16| :|imm8|) (:|o16| #x83 :/4 :|ib|)) + (("AND") (:|r/m32| :|imm32|) (:|o32| #x81 :/4 :|id|)) + (("AND") (:|r/m16| :|imm16|) (:|o16| #x81 :/4 :|iw|)) + (("AND") (:|r/m8| :|imm8|) (#x80 :/4 :|ib|)) + (("AND") (:|reg32| :|r/m32|) (:|o32| #x23 :|/r|)) + (("AND") (:|reg16| :|r/m16|) (:|o16| #x23 :|/r|)) + (("AND") (:|reg8| :|r/m8|) (#x22 :|/r|)) + (("AND") (:|r/m32| :|reg32|) (:|o32| #x21 :|/r|)) + (("AND") (:|r/m16| :|reg16|) (:|o16| #x21 :|/r|)) + (("AND") (:|r/m8| :|reg8|) (#x20 :|/r|)) + (("ADDSS") (:|xmm1| :|xmm2/mem32|) (#xF3 #xF #x58 :|/r|)) + (("ADDSD") (:|xmm1| :|xmm2/mem64|) (#xF2 #xF #x58 :|/r|)) + (("ADDPS") (:|xmm1| :|xmm2/mem128|) (#xF #x58 :|/r|)) + (("ADDPD") (:|xmm1| :|xmm2/mem128|) (#x66 #xF #x58 :|/r|)) + (("ADD") (:|EAX| :|imm32|) (:|o32| #x5 :|id|)) + (("ADD") (:AX :|imm16|) (:|o16| #x5 :|iw|)) + (("ADD") (:AL :|imm8|) (#x4 :|ib|)) + (("ADD") (:|r/m32| :|imm8|) (:|o32| #x83 :/0 :|ib|)) + (("ADD") (:|r/m16| :|imm8|) (:|o16| #x83 :/0 :|ib|)) + (("ADD") (:|r/m32| :|imm32|) (:|o32| #x81 :/0 :|id|)) + (("ADD") (:|r/m16| :|imm16|) (:|o16| #x81 :/0 :|iw|)) + (("ADD") (:|r/m8| :|imm8|) (#x80 :/0 :|ib|)) + (("ADD") (:|reg32| :|r/m32|) (:|o32| #x3 :|/r|)) + (("ADD") (:|reg16| :|r/m16|) (:|o16| #x3 :|/r|)) + (("ADD") (:|reg8| :|r/m8|) (#x2 :|/r|)) + (("ADD") (:|r/m32| :|reg32|) (:|o32| #x1 :|/r|)) + (("ADD") (:|r/m16| :|reg16|) (:|o16| #x1 :|/r|)) + (("ADD") (:|r/m8| :|reg8|) (#x0 :|/r|)) + (("ADC") (:|EAX| :|imm32|) (:|o32| #x15 :|id|)) + (("ADC") (:AX :|imm16|) (:|o16| #x15 :|iw|)) + (("ADC") (:AL :|imm8|) (#x14 :|ib|)) + (("ADC") (:|r/m32| :|imm8|) (:|o32| #x83 :/2 :|ib|)) + (("ADC") (:|r/m16| :|imm8|) (:|o16| #x83 :/2 :|ib|)) + (("ADC") (:|r/m32| :|imm32|) (:|o32| #x81 :/2 :|id|)) + (("ADC") (:|r/m16| :|imm16|) (:|o16| #x81 :/2 :|iw|)) + (("ADC") (:|r/m8| :|imm8|) (#x80 :/2 :|ib|)) + (("ADC") (:|reg32| :|r/m32|) (:|o32| #x13 :|/r|)) + (("ADC") (:|reg16| :|r/m16|) (:|o16| #x13 :|/r|)) + (("ADC") (:|reg8| :|r/m8|) (#x12 :|/r|)) + (("ADC") (:|r/m32| :|reg32|) (:|o32| #x11 :|/r|)) + (("ADC") (:|r/m16| :|reg16|) (:|o16| #x11 :|/r|)) + (("ADC") (:|r/m8| :|reg8|) (#x10 :|/r|)) + (("AAM") (:|imm|) (#xD4 :|ib|)) + (("AAM") (:|none|) (#xD4 #xA)) + (("AAD") (:|imm|) (#xD5 :|ib|)) + (("AAD") (:|none|) (#xD5 #xA)) + (("AAS") (:|none|) (#x3F)) + (("AAA") (:|none|) (#x37)) + (("J0 NEAR") (:|imm|) (#xF #x80 :|rw/rd|)) + (("JNO NEAR") (:|imm|) (#xF #x81 :|rw/rd|)) + (("JB NEAR") (:|imm|) (#xF #x82 :|rw/rd|)) + (("JC NEAR") (:|imm|) (#xF #x82 :|rw/rd|)) + (("JNAE NEAR") (:|imm|) (#xF #x82 :|rw/rd|)) + (("JAE NEAR") (:|imm|) (#xF #x83 :|rw/rd|)) + (("JNB NEAR") (:|imm|) (#xF #x83 :|rw/rd|)) + (("JNC NEAR") (:|imm|) (#xF #x83 :|rw/rd|)) + (("JE NEAR") (:|imm|) (#xF #x84 :|rw/rd|)) + (("JZ NEAR") (:|imm|) (#xF #x84 :|rw/rd|)) + (("JNE NEAR") (:|imm|) (#xF #x85 :|rw/rd|)) + (("JNZ NEAR") (:|imm|) (#xF #x85 :|rw/rd|)) + (("JBE NEAR") (:|imm|) (#xF #x86 :|rw/rd|)) + (("JNA NEAR") (:|imm|) (#xF #x86 :|rw/rd|)) + (("JA NEAR") (:|imm|) (#xF #x87 :|rw/rd|)) + (("JNBE NEAR") (:|imm|) (#xF #x87 :|rw/rd|)) + (("JS NEAR") (:|imm|) (#xF #x88 :|rw/rd|)) + (("JNS NEAR") (:|imm|) (#xF #x89 :|rw/rd|)) + (("JP NEAR") (:|imm|) (#xF #x8A :|rw/rd|)) + (("JPE NEAR") (:|imm|) (#xF #x8A :|rw/rd|)) + (("JNP NEAR") (:|imm|) (#xF #x8B :|rw/rd|)) + (("JPO NEAR") (:|imm|) (#xF #x8B :|rw/rd|)) + (("JL NEAR") (:|imm|) (#xF #x8C :|rw/rd|)) + (("JNGE NEAR") (:|imm|) (#xF #x8C :|rw/rd|)) + (("JGE NEAR") (:|imm|) (#xF #x8D :|rw/rd|)) + (("JNL NEAR") (:|imm|) (#xF #x8D :|rw/rd|)) + (("JLE NEAR") (:|imm|) (#xF #x8E :|rw/rd|)) + (("JNG NEAR") (:|imm|) (#xF #x8E :|rw/rd|)) + (("JG NEAR") (:|imm|) (#xF #x8F :|rw/rd|)) + (("JNLE NEAR") (:|imm|) (#xF #x8F :|rw/rd|)) + (("J0") (:|imm|) (#x70 :|rb|)) + (("JNO") (:|imm|) (#x71 :|rb|)) + (("JB") (:|imm|) (#x72 :|rb|)) + (("JC") (:|imm|) (#x72 :|rb|)) + (("JNAE") (:|imm|) (#x72 :|rb|)) + (("JAE") (:|imm|) (#x73 :|rb|)) + (("JNB") (:|imm|) (#x73 :|rb|)) + (("JNC") (:|imm|) (#x73 :|rb|)) + (("JE") (:|imm|) (#x74 :|rb|)) + (("JZ") (:|imm|) (#x74 :|rb|)) + (("JNE") (:|imm|) (#x75 :|rb|)) + (("JNZ") (:|imm|) (#x75 :|rb|)) + (("JBE") (:|imm|) (#x76 :|rb|)) + (("JNA") (:|imm|) (#x76 :|rb|)) + (("JA") (:|imm|) (#x77 :|rb|)) + (("JNBE") (:|imm|) (#x77 :|rb|)) + (("JS") (:|imm|) (#x78 :|rb|)) + (("JNS") (:|imm|) (#x79 :|rb|)) + (("JP") (:|imm|) (#x7A :|rb|)) + (("JPE") (:|imm|) (#x7A :|rb|)) + (("JNP") (:|imm|) (#x7B :|rb|)) + (("JPO") (:|imm|) (#x7B :|rb|)) + (("JL") (:|imm|) (#x7C :|rb|)) + (("JNGE") (:|imm|) (#x7C :|rb|)) + (("JGE") (:|imm|) (#x7D :|rb|)) + (("JNL") (:|imm|) (#x7D :|rb|)) + (("JLE") (:|imm|) (#x7E :|rb|)) + (("JNG") (:|imm|) (#x7E :|rb|)) + (("JG") (:|imm|) (#x7F :|rb|)) + (("JNLE") (:|imm|) (#x7F :|rb|)) + (("SET0") (:|r/m8|) (#xF #x90 :/2)) + (("SETNO") (:|r/m8|) (#xF #x91 :/2)) + (("SETB") (:|r/m8|) (#xF #x92 :/2)) + (("SETC") (:|r/m8|) (#xF #x92 :/2)) + (("SETNAE") (:|r/m8|) (#xF #x92 :/2)) + (("SETAE") (:|r/m8|) (#xF #x93 :/2)) + (("SETNB") (:|r/m8|) (#xF #x93 :/2)) + (("SETNC") (:|r/m8|) (#xF #x93 :/2)) + (("SETE") (:|r/m8|) (#xF #x94 :/2)) + (("SETZ") (:|r/m8|) (#xF #x94 :/2)) + (("SETNE") (:|r/m8|) (#xF #x95 :/2)) + (("SETNZ") (:|r/m8|) (#xF #x95 :/2)) + (("SETBE") (:|r/m8|) (#xF #x96 :/2)) + (("SETNA") (:|r/m8|) (#xF #x96 :/2)) + (("SETA") (:|r/m8|) (#xF #x97 :/2)) + (("SETNBE") (:|r/m8|) (#xF #x97 :/2)) + (("SETS") (:|r/m8|) (#xF #x98 :/2)) + (("SETNS") (:|r/m8|) (#xF #x99 :/2)) + (("SETP") (:|r/m8|) (#xF #x9A :/2)) + (("SETPE") (:|r/m8|) (#xF #x9A :/2)) + (("SETNP") (:|r/m8|) (#xF #x9B :/2)) + (("SETPO") (:|r/m8|) (#xF #x9B :/2)) + (("SETL") (:|r/m8|) (#xF #x9C :/2)) + (("SETNGE") (:|r/m8|) (#xF #x9C :/2)) + (("SETGE") (:|r/m8|) (#xF #x9D :/2)) + (("SETNL") (:|r/m8|) (#xF #x9D :/2)) + (("SETLE") (:|r/m8|) (#xF #x9E :/2)) + (("SETNG") (:|r/m8|) (#xF #x9E :/2)) + (("SETG") (:|r/m8|) (#xF #x9F :/2)) + (("SETNLE") (:|r/m8|) (#xF #x9F :/2)) + (("CMOV0") (:|reg32| :|r/m32|) (:|o32| #xF #x40 :|/r|)) + (("CMOVNO") (:|reg32| :|r/m32|) (:|o32| #xF #x41 :|/r|)) + (("CMOVB") (:|reg32| :|r/m32|) (:|o32| #xF #x42 :|/r|)) + (("CMOVC") (:|reg32| :|r/m32|) (:|o32| #xF #x42 :|/r|)) + (("CMOVNAE") (:|reg32| :|r/m32|) (:|o32| #xF #x42 :|/r|)) + (("CMOVAE") (:|reg32| :|r/m32|) (:|o32| #xF #x43 :|/r|)) + (("CMOVNB") (:|reg32| :|r/m32|) (:|o32| #xF #x43 :|/r|)) + (("CMOVNC") (:|reg32| :|r/m32|) (:|o32| #xF #x43 :|/r|)) + (("CMOVE") (:|reg32| :|r/m32|) (:|o32| #xF #x44 :|/r|)) + (("CMOVZ") (:|reg32| :|r/m32|) (:|o32| #xF #x44 :|/r|)) + (("CMOVNE") (:|reg32| :|r/m32|) (:|o32| #xF #x45 :|/r|)) + (("CMOVNZ") (:|reg32| :|r/m32|) (:|o32| #xF #x45 :|/r|)) + (("CMOVBE") (:|reg32| :|r/m32|) (:|o32| #xF #x46 :|/r|)) + (("CMOVNA") (:|reg32| :|r/m32|) (:|o32| #xF #x46 :|/r|)) + (("CMOVA") (:|reg32| :|r/m32|) (:|o32| #xF #x47 :|/r|)) + (("CMOVNBE") (:|reg32| :|r/m32|) (:|o32| #xF #x47 :|/r|)) + (("CMOVS") (:|reg32| :|r/m32|) (:|o32| #xF #x48 :|/r|)) + (("CMOVNS") (:|reg32| :|r/m32|) (:|o32| #xF #x49 :|/r|)) + (("CMOVP") (:|reg32| :|r/m32|) (:|o32| #xF #x4A :|/r|)) + (("CMOVPE") (:|reg32| :|r/m32|) (:|o32| #xF #x4A :|/r|)) + (("CMOVNP") (:|reg32| :|r/m32|) (:|o32| #xF #x4B :|/r|)) + (("CMOVPO") (:|reg32| :|r/m32|) (:|o32| #xF #x4B :|/r|)) + (("CMOVL") (:|reg32| :|r/m32|) (:|o32| #xF #x4C :|/r|)) + (("CMOVNGE") (:|reg32| :|r/m32|) (:|o32| #xF #x4C :|/r|)) + (("CMOVGE") (:|reg32| :|r/m32|) (:|o32| #xF #x4D :|/r|)) + (("CMOVNL") (:|reg32| :|r/m32|) (:|o32| #xF #x4D :|/r|)) + (("CMOVLE") (:|reg32| :|r/m32|) (:|o32| #xF #x4E :|/r|)) + (("CMOVNG") (:|reg32| :|r/m32|) (:|o32| #xF #x4E :|/r|)) + (("CMOVG") (:|reg32| :|r/m32|) (:|o32| #xF #x4F :|/r|)) + (("CMOVNLE") (:|reg32| :|r/m32|) (:|o32| #xF #x4F :|/r|)) + (("CMOV0") (:|reg16| :|r/m16|) (:|o16| #xF #x40 :|/r|)) + (("CMOVNO") (:|reg16| :|r/m16|) (:|o16| #xF #x41 :|/r|)) + (("CMOVB") (:|reg16| :|r/m16|) (:|o16| #xF #x42 :|/r|)) + (("CMOVC") (:|reg16| :|r/m16|) (:|o16| #xF #x42 :|/r|)) + (("CMOVNAE") (:|reg16| :|r/m16|) (:|o16| #xF #x42 :|/r|)) + (("CMOVAE") (:|reg16| :|r/m16|) (:|o16| #xF #x43 :|/r|)) + (("CMOVNB") (:|reg16| :|r/m16|) (:|o16| #xF #x43 :|/r|)) + (("CMOVNC") (:|reg16| :|r/m16|) (:|o16| #xF #x43 :|/r|)) + (("CMOVE") (:|reg16| :|r/m16|) (:|o16| #xF #x44 :|/r|)) + (("CMOVZ") (:|reg16| :|r/m16|) (:|o16| #xF #x44 :|/r|)) + (("CMOVNE") (:|reg16| :|r/m16|) (:|o16| #xF #x45 :|/r|)) + (("CMOVNZ") (:|reg16| :|r/m16|) (:|o16| #xF #x45 :|/r|)) + (("CMOVBE") (:|reg16| :|r/m16|) (:|o16| #xF #x46 :|/r|)) + (("CMOVNA") (:|reg16| :|r/m16|) (:|o16| #xF #x46 :|/r|)) + (("CMOVA") (:|reg16| :|r/m16|) (:|o16| #xF #x47 :|/r|)) + (("CMOVNBE") (:|reg16| :|r/m16|) (:|o16| #xF #x47 :|/r|)) + (("CMOVS") (:|reg16| :|r/m16|) (:|o16| #xF #x48 :|/r|)) + (("CMOVNS") (:|reg16| :|r/m16|) (:|o16| #xF #x49 :|/r|)) + (("CMOVP") (:|reg16| :|r/m16|) (:|o16| #xF #x4A :|/r|)) + (("CMOVPE") (:|reg16| :|r/m16|) (:|o16| #xF #x4A :|/r|)) + (("CMOVNP") (:|reg16| :|r/m16|) (:|o16| #xF #x4B :|/r|)) + (("CMOVPO") (:|reg16| :|r/m16|) (:|o16| #xF #x4B :|/r|)) + (("CMOVL") (:|reg16| :|r/m16|) (:|o16| #xF #x4C :|/r|)) + (("CMOVNGE") (:|reg16| :|r/m16|) (:|o16| #xF #x4C :|/r|)) + (("CMOVGE") (:|reg16| :|r/m16|) (:|o16| #xF #x4D :|/r|)) + (("CMOVNL") (:|reg16| :|r/m16|) (:|o16| #xF #x4D :|/r|)) + (("CMOVLE") (:|reg16| :|r/m16|) (:|o16| #xF #x4E :|/r|)) + (("CMOVNG") (:|reg16| :|r/m16|) (:|o16| #xF #x4E :|/r|)) + (("CMOVG") (:|reg16| :|r/m16|) (:|o16| #xF #x4F :|/r|)) + (("CMOVNLE") (:|reg16| :|r/m16|) (:|o16| #xF #x4F :|/r|)))) + +(defparameter *instruction-lookup-table* + (make-hash-table :test 'eq)) + +;; transform the above into a more useful hashtable +(defun make-instruction-hash-table () + "(make-instruction-hash-table) Transform our list of +instructions extracted from the NASM docs to a useful +hashtable" + (flet ((get-instruction-names () + (mapcar #'(lambda (i) + (intern (first (first i)) :KEYWORD)) + *instruction-table*)) + (get-instruction-descriptions () + (mapcar #'(lambda (i) + (rest i)) *instruction-table*))) + (loop + for name in (get-instruction-names) + for description in (get-instruction-descriptions) + do + (progn + (format *debug-io* "Adding ~W to table - ~A ~%" + name description) + (setf (gethash name *instruction-lookup-table*) + (cons description + (gethash name + *instruction-lookup-table*))))))) + +(defun lookup-instruction (instruction-designator) + "(lookup-instruction instruction-designator) if +instruction is a recognised instruction, return it +and it's description as a pair of values" + (ctypecase instruction-designator + (string (let + ((instruction-symbol + (find-symbol + instruction-designator :KEYWORD))) + (if instruction-symbol + (values + instruction-symbol + (gethash instruction-symbol + *instruction-lookup-table*)) + (error "Unknown instruction ~A " + instruction-designator)))) + (symbol (if (eq (symbol-package instruction-designator) + (find-package 'keyword)) + (values + instruction-designator + (gethash instruction-designator + *instruction-lookup-table*)) + (error "Unknown instruction ~A " + instruction-designator))))) + + +;; constructors accessors for instuction encoding ------------------------- + +(defun make-mod-rm-byte (mod r/m spare) + (logior + (ash mod 6) + (ash spare 3) + r/m)) + +(defun get-mod-rm-field (field modrm) + (ccase field + (:mod (ash modrm -6)) + (:spare (logand (ash modrm -3) #X7)) + (:|r/m| (logand modrm #X7)))) + + +(defun make-sib-byte (scale index base) + (logior + (ash scale 6) + (ash index 3) + base)) + +(defun get-sib-field (field sib) + (ccase field + (:scale (ash sib -6)) + (:index (logand (ash sib -3) #X7)) + (:base (logand sib #X7)))) + + + +(defun make-instruction () + "(make-instruction - create a new assoc list to +represent an empty instruction." + (let ((instruction (gensym "INSTRUCTION"))) + (setf (get instruction :prefix) NIL) + (setf (get instruction :opcodes) NIL) + (setf (get instruction :|mod-r/m|) NIL) + (setf (get instruction :|sib|) NIL) + (setf (get instruction :displacement) NIL) + (setf (get instruction :immediate-data) NIL) + (setf (get instruction :immediate-symbol) NIL) + (setf (get instruction :displacement-symbol) NIL) + instruction)) + +(defun flatten-instruction (instruction) + (append + (get instruction :prefix) + (get instruction :opcodes) + (if (not (null (get instruction :|mod-r/m|))) + (list (get instruction :|mod-r/m|))) + (if (not (null (get instruction :|sib|))) + (list (get instruction :|sib|))) + (get instruction :displacement) + (get instruction :immediate-data))) + +(defun print-instruction (prefix instruction) + (format *debug-io* "Instruction ~A ~A ~&" + prefix + (list (get instruction :prefix) + (get instruction :opcodes) + (get instruction :|mod-r/m|) + (get instruction :|sib|) + (get instruction :displacement) + (get instruction :immediate-data) + (get instruction :immediate-symbol) + (get instruction :displacement-symbol)))) -- 2.11.4.GIT