udis86sx/udis86/libudis86/types.h
author Jan Vrany <jan.vrany@fit.cvut.cz>
Tue, 14 Jun 2016 22:40:22 +0100
changeset 21 7d99b51b4784
parent 0 e4a716697bef
permissions -rw-r--r--
Build files for udis86 regenerated using newer autotools ...in order to support building under MSYS2 environment.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
/* udis86 - libudis86/types.h
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
 *
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
 * Copyright (c) 2002-2013 Vivek Thampi
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
 * All rights reserved.
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
 * 
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
 * Redistribution and use in source and binary forms, with or without modification, 
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
 * are permitted provided that the following conditions are met:
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
 * 
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
 *     * Redistributions of source code must retain the above copyright notice, 
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
 *       this list of conditions and the following disclaimer.
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
 *     * Redistributions in binary form must reproduce the above copyright notice, 
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
 *       this list of conditions and the following disclaimer in the documentation 
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
 *       and/or other materials provided with the distribution.
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
 * 
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
 */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
#ifndef UD_TYPES_H
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
#define UD_TYPES_H
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
#ifdef __KERNEL__
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
  /* -D__KERNEL__ is automatically passed on the command line when
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
     building something as part of the Linux kernel */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
# include <linux/kernel.h>
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
# include <linux/string.h>
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
# ifndef __UD_STANDALONE__
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
#  define __UD_STANDALONE__ 1
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
#endif
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
#endif /* __KERNEL__ */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
#if defined(_MSC_VER) || defined(__BORLANDC__)
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
# include <stdint.h>
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
# include <stdio.h>
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
# define inline __inline /* MS Visual Studio requires __inline 
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
                            instead of inline for C code */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
#elif !defined(__UD_STANDALONE__)
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
# include <stdio.h>
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
# include <inttypes.h>
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
#endif /* !__UD_STANDALONE__ */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
/* gcc specific extensions */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
#ifdef __GNUC__
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
# define UD_ATTR_PACKED __attribute__((packed))
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
#else
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
# define UD_ATTR_PACKED
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
#endif /* UD_ATTR_PACKED */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
/* -----------------------------------------------------------------------------
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
 * All possible "types" of objects in udis86. Order is Important!
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
 * -----------------------------------------------------------------------------
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
 */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
enum ud_type
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
{
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
  UD_NONE,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
  /* 8 bit GPRs */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
  UD_R_AL,  UD_R_CL,  UD_R_DL,  UD_R_BL,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
  UD_R_AH,  UD_R_CH,  UD_R_DH,  UD_R_BH,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
  UD_R_SPL, UD_R_BPL, UD_R_SIL, UD_R_DIL,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
  UD_R_R8B, UD_R_R9B, UD_R_R10B,  UD_R_R11B,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
  UD_R_R12B,  UD_R_R13B,  UD_R_R14B,  UD_R_R15B,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
  /* 16 bit GPRs */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
  UD_R_AX,  UD_R_CX,  UD_R_DX,  UD_R_BX,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
  UD_R_SP,  UD_R_BP,  UD_R_SI,  UD_R_DI,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
  UD_R_R8W, UD_R_R9W, UD_R_R10W,  UD_R_R11W,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
  UD_R_R12W,  UD_R_R13W,  UD_R_R14W,  UD_R_R15W,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
  
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
  /* 32 bit GPRs */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
  UD_R_EAX, UD_R_ECX, UD_R_EDX, UD_R_EBX,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
  UD_R_ESP, UD_R_EBP, UD_R_ESI, UD_R_EDI,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
  UD_R_R8D, UD_R_R9D, UD_R_R10D,  UD_R_R11D,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
  UD_R_R12D,  UD_R_R13D,  UD_R_R14D,  UD_R_R15D,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
  
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
  /* 64 bit GPRs */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
  UD_R_RAX, UD_R_RCX, UD_R_RDX, UD_R_RBX,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
  UD_R_RSP, UD_R_RBP, UD_R_RSI, UD_R_RDI,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
  UD_R_R8,  UD_R_R9,  UD_R_R10, UD_R_R11,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
  UD_R_R12, UD_R_R13, UD_R_R14, UD_R_R15,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
  /* segment registers */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
  UD_R_ES,  UD_R_CS,  UD_R_SS,  UD_R_DS,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
  UD_R_FS,  UD_R_GS,  
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
  /* control registers*/
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
  UD_R_CR0, UD_R_CR1, UD_R_CR2, UD_R_CR3,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
  UD_R_CR4, UD_R_CR5, UD_R_CR6, UD_R_CR7,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
  UD_R_CR8, UD_R_CR9, UD_R_CR10,  UD_R_CR11,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
  UD_R_CR12,  UD_R_CR13,  UD_R_CR14,  UD_R_CR15,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
  
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
  /* debug registers */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
  UD_R_DR0, UD_R_DR1, UD_R_DR2, UD_R_DR3,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
  UD_R_DR4, UD_R_DR5, UD_R_DR6, UD_R_DR7,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
  UD_R_DR8, UD_R_DR9, UD_R_DR10,  UD_R_DR11,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
  UD_R_DR12,  UD_R_DR13,  UD_R_DR14,  UD_R_DR15,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
  /* mmx registers */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
  UD_R_MM0, UD_R_MM1, UD_R_MM2, UD_R_MM3,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
  UD_R_MM4, UD_R_MM5, UD_R_MM6, UD_R_MM7,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
  /* x87 registers */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
  UD_R_ST0, UD_R_ST1, UD_R_ST2, UD_R_ST3,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
  UD_R_ST4, UD_R_ST5, UD_R_ST6, UD_R_ST7, 
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
  /* extended multimedia registers */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
  UD_R_XMM0,  UD_R_XMM1,  UD_R_XMM2,  UD_R_XMM3,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
  UD_R_XMM4,  UD_R_XMM5,  UD_R_XMM6,  UD_R_XMM7,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
  UD_R_XMM8,  UD_R_XMM9,  UD_R_XMM10, UD_R_XMM11,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
  UD_R_XMM12, UD_R_XMM13, UD_R_XMM14, UD_R_XMM15,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
  UD_R_RIP,
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
  /* Operand Types */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
  UD_OP_REG,  UD_OP_MEM,  UD_OP_PTR,  UD_OP_IMM,  
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
  UD_OP_JIMM, UD_OP_CONST
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
};
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
#include "itab.h"
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
union ud_lval {
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
  int8_t     sbyte;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
  uint8_t    ubyte;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
  int16_t    sword;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
  uint16_t   uword;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
  int32_t    sdword;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
  uint32_t   udword;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
  int64_t    sqword;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
  uint64_t   uqword;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
  struct {
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
    uint16_t seg;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
    uint32_t off;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
  } ptr;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
};
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
/* -----------------------------------------------------------------------------
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
 * struct ud_operand - Disassembled instruction Operand.
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
 * -----------------------------------------------------------------------------
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
 */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
struct ud_operand {
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
  enum ud_type    type;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
  uint8_t         size;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
  enum ud_type    base;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
  enum ud_type    index;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
  uint8_t         scale;  
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
  uint8_t         offset;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
  union ud_lval   lval;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
  /*
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
   * internal use only
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
   */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
  uint64_t        _legacy; /* this will be removed in 1.8 */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
  uint8_t         _oprcode;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
};
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   162
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   163
/* -----------------------------------------------------------------------------
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   164
 * struct ud - The udis86 object.
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   165
 * -----------------------------------------------------------------------------
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   166
 */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   167
struct ud
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   168
{
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   169
  /*
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   170
   * input buffering
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   171
   */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   172
  int       (*inp_hook) (struct ud*);
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   173
#ifndef __UD_STANDALONE__
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   174
  FILE*     inp_file;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   175
#endif
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   176
  const uint8_t* inp_buf;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   177
  size_t    inp_buf_size;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   178
  size_t    inp_buf_index;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   179
  uint8_t   inp_curr;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   180
  size_t    inp_ctr;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   181
  uint8_t   inp_sess[64];
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   182
  int       inp_end;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   183
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   184
  void      (*translator)(struct ud*);
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   185
  uint64_t  insn_offset;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   186
  char      insn_hexcode[64];
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   187
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   188
  /*
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   189
   * Assembly output buffer
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   190
   */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   191
  char     *asm_buf;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   192
  size_t    asm_buf_size;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   193
  size_t    asm_buf_fill;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   194
  char      asm_buf_int[128];
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   195
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   196
  /*
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   197
   * Symbol resolver for use in the translation phase.
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   198
   */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   199
  const char* (*sym_resolver)(struct ud*, uint64_t addr, int64_t *offset);
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   200
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   201
  uint8_t   dis_mode;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   202
  uint64_t  pc;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   203
  uint8_t   vendor;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   204
  enum ud_mnemonic_code mnemonic;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   205
  struct ud_operand operand[3];
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   206
  uint8_t   error;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   207
  uint8_t   pfx_rex;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   208
  uint8_t   pfx_seg;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   209
  uint8_t   pfx_opr;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   210
  uint8_t   pfx_adr;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   211
  uint8_t   pfx_lock;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   212
  uint8_t   pfx_str;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   213
  uint8_t   pfx_rep;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   214
  uint8_t   pfx_repe;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   215
  uint8_t   pfx_repne;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   216
  uint8_t   opr_mode;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   217
  uint8_t   adr_mode;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   218
  uint8_t   br_far;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   219
  uint8_t   br_near;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   220
  uint8_t   have_modrm;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   221
  uint8_t   modrm;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   222
  uint8_t   primary_opcode;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   223
  void *    user_opaque_data;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   224
  struct ud_itab_entry * itab_entry;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   225
  struct ud_lookup_table_list_entry *le;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   226
};
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   227
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   228
/* -----------------------------------------------------------------------------
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   229
 * Type-definitions
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   230
 * -----------------------------------------------------------------------------
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   231
 */
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   232
typedef enum ud_type          ud_type_t;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   233
typedef enum ud_mnemonic_code ud_mnemonic_code_t;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   234
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   235
typedef struct ud             ud_t;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   236
typedef struct ud_operand     ud_operand_t;
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   237
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   238
#define UD_SYN_INTEL          ud_translate_intel
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   239
#define UD_SYN_ATT            ud_translate_att
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   240
#define UD_EOI                (-1)
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   241
#define UD_INP_CACHE_SZ       32
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   242
#define UD_VENDOR_AMD         0
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   243
#define UD_VENDOR_INTEL       1
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   244
#define UD_VENDOR_ANY         2
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   245
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   246
#endif
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   247
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   248
/*
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   249
vim: set ts=2 sw=2 expandtab
e4a716697bef Added sources of udis86 1.7.2
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   250
*/