2010-06-16 Vincent Rivire <vincent.riviere@freesbee.fr>
[binutils.git] / opcodes / arc-dis.h
blob33445322b16176aaa60047e4777e6c61da6c9d96
1 /* Disassembler structures definitions for the ARC.
2 Copyright 1994, 1995, 1997, 1998, 2000, 2001, 2005, 2007
3 Free Software Foundation, Inc.
4 Contributed by Doug Evans (dje@cygnus.com).
6 This file is part of libopcodes.
8 This library is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3, or (at your option)
11 any later version.
13 It is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
16 License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software Foundation,
20 Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
22 #ifndef ARCDIS_H
23 #define ARCDIS_H
25 enum
27 BR_exec_when_no_jump,
28 BR_exec_always,
29 BR_exec_when_jump
32 enum Flow
34 noflow,
35 direct_jump,
36 direct_call,
37 indirect_jump,
38 indirect_call,
39 invalid_instr
42 enum { no_reg = 99 };
43 enum { allOperandsSize = 256 };
45 struct arcDisState
47 void *_this;
48 int instructionLen;
49 void (*err)(void*, const char*);
50 const char *(*coreRegName)(void*, int);
51 const char *(*auxRegName)(void*, int);
52 const char *(*condCodeName)(void*, int);
53 const char *(*instName)(void*, int, int, int*);
55 unsigned char* instruction;
56 unsigned index;
57 const char *comm[6]; /* instr name, cond, NOP, 3 operands */
58 int opWidth;
59 int targets[4];
60 int addresses[4];
61 /* Set as a side-effect of calling the disassembler.
62 Used only by the debugger. */
63 enum Flow flow;
64 int register_for_indirect_jump;
65 int ea_reg1, ea_reg2, _offset;
66 int _cond, _opcode;
67 unsigned long words[2];
68 char *commentBuffer;
69 char instrBuffer[40];
70 char operandBuffer[allOperandsSize];
71 char _ea_present;
72 char _mem_load;
73 char _load_len;
74 char nullifyMode;
75 unsigned char commNum;
76 unsigned char isBranch;
77 unsigned char tcnt;
78 unsigned char acnt;
81 #define __TRANSLATION_REQUIRED(state) ((state).acnt != 0)
83 #endif