1 ;;;;------------------------------------------------------------------
3 ;;;; Copyright (C) 20012000, 2003-2004,
4 ;;;; Department of Computer Science, University of Tromso, Norway
6 ;;;; Filename: prefixes.lisp
7 ;;;; Description: X86 Instruction prefixes.
8 ;;;; Author: Frode Vatvedt Fjeld <frodef@acm.org>
9 ;;;; Created at: Tue Aug 15 22:34:30 2000
10 ;;;; Distribution: See the accompanying file COPYING.
12 ;;;; $Id: prefixes.lisp,v 1.3 2004/02/10 00:03:56 ffjeld Exp $
14 ;;;;------------------------------------------------------------------
18 ;;; ----------------------------------------------------------------
19 ;;; Instruction prefixes
20 ;;; ----------------------------------------------------------------
22 (defparameter +opcode-prefix-map-lock-and-repeat
+
23 (make-decoder-set (#xf0 lock
)
27 (defparameter +prefix-opcode-map-lock-and-repeat
+
28 (make-encoder-set (#xf0 lock
)
32 (defparameter +opcode-prefix-map-segment-override
+
33 (make-decoder-set (#x2e cs-override
) (#x36 ss-override
)
34 (#x3e ds-override
) (#x26 es-override
)
35 (#x64 fs-override
) (#x65 gs-override
)))
37 (defparameter +prefix-opcode-map-segment-override
+
38 (make-encoder-set (#x2e cs-override
) (#x36 ss-override
)
39 (#x3e ds-override
) (#x26 es-override
)
40 (#x64 fs-override
) (#x65 gs-override
)))
42 (defparameter +opcode-prefix-map-operand-size-override
+
43 (make-decoder-set (#x66
16-bit-operand
)))
45 (defparameter +prefix-opcode-map-operand-size-override
+
46 (make-encoder-set (#x66
16-bit-operand
)))
48 (defparameter +opcode-prefix-map-address-size-override
+
49 (make-decoder-set (#x67
16-bit-address
)))
51 (defparameter +prefix-opcode-map-address-size-override
+
52 (make-encoder-set (#x67
16-bit-address
)))
54 (defparameter +opcode-prefix-map
+
55 (append +opcode-prefix-map-lock-and-repeat
+
56 +opcode-prefix-map-segment-override
+
57 +opcode-prefix-map-operand-size-override
+
58 +opcode-prefix-map-address-size-override
+))
60 (defparameter +prefix-opcode-map
+
61 (append +prefix-opcode-map-lock-and-repeat
+
62 +prefix-opcode-map-segment-override
+
63 +prefix-opcode-map-operand-size-override
+
64 +prefix-opcode-map-address-size-override
+))
66 (defun prefix-symbol (opcode)
67 (cdr (assoc opcode
+opcode-prefix-map
+)))