1 ;;;;------------------------------------------------------------------
3 ;;;; Copyright (C) 20012000, 2002,
4 ;;;; Department of Computer Science, University of Tromso, Norway
6 ;;;; Filename: instr-cmp.lisp
8 ;;;; Author: Frode Vatvedt Fjeld <frodef@acm.org>
9 ;;;; Created at: Sat Jan 29 20:57:45 2000
10 ;;;; Distribution: See the accompanying file COPYING.
12 ;;;; $Id: instr-cmp.lisp,v 1.2 2004/01/16 11:54:14 ffjeld Exp $
14 ;;;;------------------------------------------------------------------
16 (in-package "IA-X86-INSTR")
18 ;;; ----------------------------------------------------------------
19 ;;; CMP [IISR page 11-64]
20 ;;; ----------------------------------------------------------------
22 (def-instr cmp
(instruction))
24 (:plain
#x3c
(0 1) (imm8 al
))
25 (:digit
(#x80
7) 1 (imm8 r
/m8
))
30 (:plain
#x3d
(0 2) (imm16 ax
) :operand-mode
:16-bit
)
31 (:digit
(#x81
7) 2 (imm16 r
/m16
) :operand-mode
:16-bit
)
32 (:digit
(#x83
7) 1 (simm8 r
/m16
) :operand-mode
:16-bit
)
33 (:r
#x39
(r16 r
/m16
) :operand-mode
:16-bit
)
34 (:r
#x3b
(r/m16 r16
) :operand-mode
:16-bit
))
37 (:plain
#x3d
(0 4) (simm32 eax
) :operand-mode
:32-bit
)
38 (:digit
(#x81
7) 4 (simm32 r
/m32
) :operand-mode
:32-bit
)
39 (:digit
(#x83
7) 1 (simm8 r
/m32
) :operand-mode
:32-bit
)
40 (:r
#x39
(r32 r
/m32
) :operand-mode
:32-bit
)
41 (:r
#x3b
(r/m32 r32
) :operand-mode
:32-bit
))
43 ;;; ----------------------------------------------------------------
44 ;;; TEST [IISR page 11-377]
45 ;;; ----------------------------------------------------------------
47 (def-instr test
(instruction))
48 (def-instr testb
(test)
49 (:plain
#xa8
(0 1) (imm8 al
))
50 (:digit
(#xf6
0) 1 (imm8 r
/m8
))
53 (def-instr testw
(test)
54 (:plain
#xa9
(0 2) (imm16 ax
) :operand-mode
:16-bit
)
55 (:digit
(#xf7
0) 2 (imm16 r
/m16
) :operand-mode
:16-bit
)
56 (:r
#x85
(r16 r
/m16
) :operand-mode
:16-bit
))
58 (def-instr testl
(test)
59 (:plain
#xa9
(0 4) (imm32 eax
) :operand-mode
:32-bit
)
60 (:digit
(#xf7
0) 4 (imm32 r
/m32
) :operand-mode
:32-bit
)
61 (:r
#x85
(r32 r
/m32
) :operand-mode
:32-bit
))
63 ;;; Compare and Exchange
65 (def-instr cmpxchg
(cmp)
67 (:r
#x0fb1
(r16 r
/m16
) :operand-mode
:16-bit
)
68 (:r
#x0fb1
(r32 r
/m32
) :operand-mode
:32-bit
))
70 (def-instr cmpxchg8b
(cmpxchg)
71 (:digit
(#x0fc7
1) 0 (m64) :indirect t
))