Have sign-extend-complex deal correctly with bytes of size 0.
[movitz-ia-x86.git] / prefixes.lisp
blobde3ef92f46eef1e6f592be5b2f3527d09e214e5a
1 ;;;;------------------------------------------------------------------
2 ;;;;
3 ;;;; Copyright (C) 20012000, 2003-2004,
4 ;;;; Department of Computer Science, University of Tromso, Norway
5 ;;;;
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.
11 ;;;;
12 ;;;; $Id: prefixes.lisp,v 1.3 2004/02/10 00:03:56 ffjeld Exp $
13 ;;;;
14 ;;;;------------------------------------------------------------------
16 (in-package #:ia-x86)
18 ;;; ----------------------------------------------------------------
19 ;;; Instruction prefixes
20 ;;; ----------------------------------------------------------------
22 (defparameter +opcode-prefix-map-lock-and-repeat+
23 (make-decoder-set (#xf0 lock)
24 (#xf2 repne)
25 (#xf3 repz)))
27 (defparameter +prefix-opcode-map-lock-and-repeat+
28 (make-encoder-set (#xf0 lock)
29 (#xf2 repne)
30 (#xf3 repz)))
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+)))