gem5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
mem.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2010 ARM Limited
3  * All rights reserved
4  *
5  * The license below extends only to copyright in the software and shall
6  * not be construed as granting a license to any other intellectual
7  * property including but not limited to intellectual property relating
8  * to a hardware implementation of the functionality of the software
9  * licensed hereunder. You may use the software subject to the license
10  * terms below provided that you ensure that this notice is replicated
11  * unmodified and in its entirety in all distributions of the software,
12  * modified or unmodified, in source code or in binary form.
13  *
14  * Copyright (c) 2007-2008 The Florida State University
15  * All rights reserved.
16  *
17  * Redistribution and use in source and binary forms, with or without
18  * modification, are permitted provided that the following conditions are
19  * met: redistributions of source code must retain the above copyright
20  * notice, this list of conditions and the following disclaimer;
21  * redistributions in binary form must reproduce the above copyright
22  * notice, this list of conditions and the following disclaimer in the
23  * documentation and/or other materials provided with the distribution;
24  * neither the name of the copyright holders nor the names of its
25  * contributors may be used to endorse or promote products derived from
26  * this software without specific prior written permission.
27  *
28  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
30  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
31  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
32  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
33  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
34  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
35  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
36  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
37  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
38  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
39  *
40  * Authors: Stephen Hines
41  */
42 #ifndef __ARCH_ARM_MEM_HH__
43 #define __ARCH_ARM_MEM_HH__
44 
46 
47 namespace ArmISA
48 {
49 
50 class Swap : public PredOp
51 {
52  protected:
56 
57  Swap(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
58  IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _base)
59  : PredOp(mnem, _machInst, __opClass),
60  dest(_dest), op1(_op1), base(_base)
61  {}
62 
63  std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
64 };
65 
66 class MightBeMicro : public PredOp
67 {
68  protected:
69  MightBeMicro(const char *mnem, ExtMachInst _machInst, OpClass __opClass)
70  : PredOp(mnem, _machInst, __opClass)
71  {}
72 
73  void
74  advancePC(PCState &pcState) const
75  {
76  if (flags[IsLastMicroop]) {
77  pcState.uEnd();
78  } else if (flags[IsMicroop]) {
79  pcState.uAdvance();
80  } else {
81  pcState.advance();
82  }
83  }
84 };
85 
86 // The address is a base register plus an immediate.
87 class RfeOp : public MightBeMicro
88 {
89  public:
90  enum AddrMode {
95  };
96  protected:
99  bool wb;
101  static const unsigned numMicroops = 3;
102 
104 
105  RfeOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
106  IntRegIndex _base, AddrMode _mode, bool _wb)
107  : MightBeMicro(mnem, _machInst, __opClass),
108  base(_base), mode(_mode), wb(_wb),
110  urc(INTREG_UREG2),
111  uops(NULL)
112  {}
113 
114  virtual
116  {
117  delete [] uops;
118  }
119 
121  fetchMicroop(MicroPC microPC) const
122  {
123  assert(uops != NULL && microPC < numMicroops);
124  return uops[microPC];
125  }
126 
127  std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
128 };
129 
130 // The address is a base register plus an immediate.
131 class SrsOp : public MightBeMicro
132 {
133  public:
134  enum AddrMode {
139  };
140  protected:
141  uint32_t regMode;
143  bool wb;
144  static const unsigned numMicroops = 2;
145 
147 
148  SrsOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
149  uint32_t _regMode, AddrMode _mode, bool _wb)
150  : MightBeMicro(mnem, _machInst, __opClass),
151  regMode(_regMode), mode(_mode), wb(_wb), uops(NULL)
152  {}
153 
154  virtual
156  {
157  delete [] uops;
158  }
159 
161  fetchMicroop(MicroPC microPC) const
162  {
163  assert(uops != NULL && microPC < numMicroops);
164  return uops[microPC];
165  }
166 
167  std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const;
168 };
169 
170 class Memory : public MightBeMicro
171 {
172  public:
173  enum AddrMode {
177  };
178 
179  protected:
180 
183  bool add;
184  static const unsigned numMicroops = 3;
185 
187 
188  Memory(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
189  IntRegIndex _dest, IntRegIndex _base, bool _add)
190  : MightBeMicro(mnem, _machInst, __opClass),
191  dest(_dest), base(_base), add(_add), uops(NULL)
192  {}
193 
194  virtual
196  {
197  delete [] uops;
198  }
199 
201  fetchMicroop(MicroPC microPC) const
202  {
203  assert(uops != NULL && microPC < numMicroops);
204  return uops[microPC];
205  }
206 
207  virtual void
208  printOffset(std::ostream &os) const
209  {}
210 
211  virtual void
212  printDest(std::ostream &os) const
213  {
214  printReg(os, dest);
215  }
216 
217  void printInst(std::ostream &os, AddrMode addrMode) const;
218 };
219 
220 // The address is a base register plus an immediate.
221 class MemoryImm : public Memory
222 {
223  protected:
224  int32_t imm;
225 
226  MemoryImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
227  IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _imm)
228  : Memory(mnem, _machInst, __opClass, _dest, _base, _add), imm(_imm)
229  {}
230 
231  void
232  printOffset(std::ostream &os) const
233  {
234  int32_t pImm = imm;
235  if (!add)
236  pImm = -pImm;
237  ccprintf(os, "#%d", pImm);
238  }
239 };
240 
241 class MemoryExImm : public MemoryImm
242 {
243  protected:
245 
246  MemoryExImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
247  IntRegIndex _result, IntRegIndex _dest, IntRegIndex _base,
248  bool _add, int32_t _imm)
249  : MemoryImm(mnem, _machInst, __opClass, _dest, _base, _add, _imm),
250  result(_result)
251  {}
252 
253  void
254  printDest(std::ostream &os) const
255  {
256  printReg(os, result);
257  os << ", ";
259  }
260 };
261 
262 // The address is a base register plus an immediate.
263 class MemoryDImm : public MemoryImm
264 {
265  protected:
267 
268  MemoryDImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
269  IntRegIndex _dest, IntRegIndex _dest2,
270  IntRegIndex _base, bool _add, int32_t _imm)
271  : MemoryImm(mnem, _machInst, __opClass, _dest, _base, _add, _imm),
272  dest2(_dest2)
273  {}
274 
275  void
276  printDest(std::ostream &os) const
277  {
279  os << ", ";
280  printReg(os, dest2);
281  }
282 };
283 
284 class MemoryExDImm : public MemoryDImm
285 {
286  protected:
288 
289  MemoryExDImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
290  IntRegIndex _result, IntRegIndex _dest, IntRegIndex _dest2,
291  IntRegIndex _base, bool _add, int32_t _imm)
292  : MemoryDImm(mnem, _machInst, __opClass, _dest, _dest2,
293  _base, _add, _imm), result(_result)
294  {}
295 
296  void
297  printDest(std::ostream &os) const
298  {
299  printReg(os, result);
300  os << ", ";
302  }
303 };
304 
305 // The address is a shifted register plus an immediate
306 class MemoryReg : public Memory
307 {
308  protected:
309  int32_t shiftAmt;
312 
313  MemoryReg(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
314  IntRegIndex _dest, IntRegIndex _base, bool _add,
315  int32_t _shiftAmt, ArmShiftType _shiftType,
316  IntRegIndex _index)
317  : Memory(mnem, _machInst, __opClass, _dest, _base, _add),
318  shiftAmt(_shiftAmt), shiftType(_shiftType), index(_index)
319  {}
320 
321  void printOffset(std::ostream &os) const;
322 };
323 
324 class MemoryDReg : public MemoryReg
325 {
326  protected:
328 
329  MemoryDReg(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
330  IntRegIndex _dest, IntRegIndex _dest2,
331  IntRegIndex _base, bool _add,
332  int32_t _shiftAmt, ArmShiftType _shiftType,
333  IntRegIndex _index)
334  : MemoryReg(mnem, _machInst, __opClass, _dest, _base, _add,
335  _shiftAmt, _shiftType, _index),
336  dest2(_dest2)
337  {}
338 
339  void
340  printDest(std::ostream &os) const
341  {
343  os << ", ";
344  printReg(os, dest2);
345  }
346 };
347 
348 template<class Base>
349 class MemoryOffset : public Base
350 {
351  protected:
352  MemoryOffset(const char *mnem, ExtMachInst _machInst,
353  OpClass __opClass, IntRegIndex _dest, IntRegIndex _base,
354  bool _add, int32_t _imm)
355  : Base(mnem, _machInst, __opClass, _dest, _base, _add, _imm)
356  {}
357 
358  MemoryOffset(const char *mnem, ExtMachInst _machInst,
359  OpClass __opClass, IntRegIndex _dest, IntRegIndex _base,
360  bool _add, int32_t _shiftAmt, ArmShiftType _shiftType,
361  IntRegIndex _index)
362  : Base(mnem, _machInst, __opClass, _dest, _base, _add,
363  _shiftAmt, _shiftType, _index)
364  {}
365 
366  MemoryOffset(const char *mnem, ExtMachInst _machInst,
367  OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2,
368  IntRegIndex _base, bool _add, int32_t _imm)
369  : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add, _imm)
370  {}
371 
372  MemoryOffset(const char *mnem, ExtMachInst _machInst,
373  OpClass __opClass, IntRegIndex _result,
374  IntRegIndex _dest, IntRegIndex _dest2,
375  IntRegIndex _base, bool _add, int32_t _imm)
376  : Base(mnem, _machInst, __opClass, _result,
377  _dest, _dest2, _base, _add, _imm)
378  {}
379 
380  MemoryOffset(const char *mnem, ExtMachInst _machInst,
381  OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2,
382  IntRegIndex _base, bool _add,
383  int32_t _shiftAmt, ArmShiftType _shiftType,
384  IntRegIndex _index)
385  : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add,
386  _shiftAmt, _shiftType, _index)
387  {}
388 
389  std::string
390  generateDisassembly(Addr pc, const SymbolTable *symtab) const
391  {
392  std::stringstream ss;
393  this->printInst(ss, Memory::AddrMd_Offset);
394  return ss.str();
395  }
396 };
397 
398 template<class Base>
399 class MemoryPreIndex : public Base
400 {
401  protected:
402  MemoryPreIndex(const char *mnem, ExtMachInst _machInst,
403  OpClass __opClass, IntRegIndex _dest, IntRegIndex _base,
404  bool _add, int32_t _imm)
405  : Base(mnem, _machInst, __opClass, _dest, _base, _add, _imm)
406  {}
407 
408  MemoryPreIndex(const char *mnem, ExtMachInst _machInst,
409  OpClass __opClass, IntRegIndex _dest, IntRegIndex _base,
410  bool _add, int32_t _shiftAmt, ArmShiftType _shiftType,
411  IntRegIndex _index)
412  : Base(mnem, _machInst, __opClass, _dest, _base, _add,
413  _shiftAmt, _shiftType, _index)
414  {}
415 
416  MemoryPreIndex(const char *mnem, ExtMachInst _machInst,
417  OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2,
418  IntRegIndex _base, bool _add, int32_t _imm)
419  : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add, _imm)
420  {}
421 
422  MemoryPreIndex(const char *mnem, ExtMachInst _machInst,
423  OpClass __opClass, IntRegIndex _result,
424  IntRegIndex _dest, IntRegIndex _dest2,
425  IntRegIndex _base, bool _add, int32_t _imm)
426  : Base(mnem, _machInst, __opClass, _result,
427  _dest, _dest2, _base, _add, _imm)
428  {}
429 
430  MemoryPreIndex(const char *mnem, ExtMachInst _machInst,
431  OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2,
432  IntRegIndex _base, bool _add,
433  int32_t _shiftAmt, ArmShiftType _shiftType,
434  IntRegIndex _index)
435  : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add,
436  _shiftAmt, _shiftType, _index)
437  {}
438 
439  std::string
440  generateDisassembly(Addr pc, const SymbolTable *symtab) const
441  {
442  std::stringstream ss;
443  this->printInst(ss, Memory::AddrMd_PreIndex);
444  return ss.str();
445  }
446 };
447 
448 template<class Base>
449 class MemoryPostIndex : public Base
450 {
451  protected:
452  MemoryPostIndex(const char *mnem, ExtMachInst _machInst,
453  OpClass __opClass, IntRegIndex _dest, IntRegIndex _base,
454  bool _add, int32_t _imm)
455  : Base(mnem, _machInst, __opClass, _dest, _base, _add, _imm)
456  {}
457 
458  MemoryPostIndex(const char *mnem, ExtMachInst _machInst,
459  OpClass __opClass, IntRegIndex _dest, IntRegIndex _base,
460  bool _add, int32_t _shiftAmt, ArmShiftType _shiftType,
461  IntRegIndex _index)
462  : Base(mnem, _machInst, __opClass, _dest, _base, _add,
463  _shiftAmt, _shiftType, _index)
464  {}
465 
466  MemoryPostIndex(const char *mnem, ExtMachInst _machInst,
467  OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2,
468  IntRegIndex _base, bool _add, int32_t _imm)
469  : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add, _imm)
470  {}
471 
472  MemoryPostIndex(const char *mnem, ExtMachInst _machInst,
473  OpClass __opClass, IntRegIndex _result,
474  IntRegIndex _dest, IntRegIndex _dest2,
475  IntRegIndex _base, bool _add, int32_t _imm)
476  : Base(mnem, _machInst, __opClass, _result,
477  _dest, _dest2, _base, _add, _imm)
478  {}
479 
480  MemoryPostIndex(const char *mnem, ExtMachInst _machInst,
481  OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2,
482  IntRegIndex _base, bool _add,
483  int32_t _shiftAmt, ArmShiftType _shiftType,
484  IntRegIndex _index)
485  : Base(mnem, _machInst, __opClass, _dest, _dest2, _base, _add,
486  _shiftAmt, _shiftType, _index)
487  {}
488 
489  std::string
490  generateDisassembly(Addr pc, const SymbolTable *symtab) const
491  {
492  std::stringstream ss;
493  this->printInst(ss, Memory::AddrMd_PostIndex);
494  return ss.str();
495  }
496 };
497 }
498 
499 #endif //__ARCH_ARM_INSTS_MEM_HH__
void ccprintf(cp::Print &print)
Definition: cprintf.hh:130
virtual ~SrsOp()
Definition: mem.hh:155
virtual void printOffset(std::ostream &os) const
Definition: mem.hh:208
StaticInstPtr fetchMicroop(MicroPC microPC) const
Return the microop that goes with a particular micropc.
Definition: mem.hh:121
int32_t imm
Definition: mem.hh:224
IntRegIndex
Definition: intregs.hh:53
ArmShiftType shiftType
Definition: mem.hh:310
static const unsigned numMicroops
Definition: mem.hh:144
IntRegIndex ura
Definition: mem.hh:100
void printDest(std::ostream &os) const
Definition: mem.hh:340
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Definition: mem.hh:440
MemoryOffset(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
Definition: mem.hh:380
MemoryPostIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _result, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:472
bool add
Definition: mem.hh:183
MemoryOffset(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
Definition: mem.hh:358
MemoryOffset(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _result, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:372
void printReg(std::ostream &os, int reg) const
Print a register name for disassembly given the unique dependence tag number (FP or int)...
Definition: static_inst.cc:296
virtual ~Memory()
Definition: mem.hh:195
StaticInstPtr * uops
Definition: mem.hh:146
Base class for predicated integer operations.
Definition: pred_inst.hh:184
void printDest(std::ostream &os) const
Definition: mem.hh:276
IntRegIndex result
Definition: mem.hh:244
IntRegIndex result
Definition: mem.hh:287
MemoryPreIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
Definition: mem.hh:408
Swap(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _op1, IntRegIndex _base)
Definition: mem.hh:57
bool wb
Definition: mem.hh:99
SrsOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, uint32_t _regMode, AddrMode _mode, bool _wb)
Definition: mem.hh:148
Memory(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add)
Definition: mem.hh:188
MemoryOffset(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:366
Bitfield< 17 > os
Definition: misc.hh:804
MemoryPostIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:466
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Definition: mem.hh:490
AddrMode mode
Definition: mem.hh:98
MemoryPostIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
Definition: mem.hh:458
IntRegIndex dest
Definition: mem.hh:181
virtual ~RfeOp()
Definition: mem.hh:115
std::bitset< Num_Flags > flags
Flag values for this instruction.
Definition: static_inst.hh:84
IntRegIndex base
Definition: mem.hh:97
static const unsigned numMicroops
Definition: mem.hh:184
uint16_t MicroPC
Definition: types.hh:144
MemoryPostIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:452
StaticInstPtr fetchMicroop(MicroPC microPC) const
Return the microop that goes with a particular micropc.
Definition: mem.hh:161
Bitfield< 21 > ss
Definition: miscregs.hh:1371
MightBeMicro(const char *mnem, ExtMachInst _machInst, OpClass __opClass)
Definition: mem.hh:69
IntRegIndex base
Definition: mem.hh:182
IntRegIndex op1
Definition: mem.hh:54
MemoryOffset(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:352
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition: types.hh:142
uint64_t ExtMachInst
Definition: types.hh:41
MemoryPostIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
Definition: mem.hh:480
MemoryPreIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
Definition: mem.hh:430
IntRegIndex index
Definition: mem.hh:311
MemoryPreIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _result, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:422
void printDest(std::ostream &os) const
Definition: mem.hh:297
MemoryPreIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:402
uint32_t regMode
Definition: mem.hh:141
IntRegIndex dest2
Definition: mem.hh:327
void printOffset(std::ostream &os) const
Definition: mem.hh:232
static const unsigned numMicroops
Definition: mem.hh:101
MemoryDReg(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
Definition: mem.hh:329
MemoryDImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:268
MemoryImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:226
GenericISA::SimplePCState< MachInst > PCState
Definition: types.hh:43
IntRegIndex urc
Definition: mem.hh:100
IntRegIndex dest
Definition: mem.hh:53
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Definition: mem.hh:390
MemoryExDImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _result, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:289
void advancePC(PCState &pcState) const
Definition: mem.hh:74
MemoryPreIndex(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _dest2, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:416
MemoryReg(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _shiftAmt, ArmShiftType _shiftType, IntRegIndex _index)
Definition: mem.hh:313
StaticInstPtr * uops
Definition: mem.hh:103
void printInst(std::ostream &os, AddrMode addrMode) const
Definition: mem.cc:178
IntRegIndex base
Definition: mem.hh:55
TheISA::ExtMachInst ExtMachInst
Binary extended machine instruction type.
Definition: static_inst.hh:72
IntReg pc
Definition: remote_gdb.hh:91
MemoryExImm(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _result, IntRegIndex _dest, IntRegIndex _base, bool _add, int32_t _imm)
Definition: mem.hh:246
AddrMode mode
Definition: mem.hh:142
void printDest(std::ostream &os) const
Definition: mem.hh:254
IntRegIndex dest2
Definition: mem.hh:266
void printOffset(std::ostream &os) const
Definition: mem.cc:53
int32_t shiftAmt
Definition: mem.hh:309
StaticInstPtr * uops
Definition: mem.hh:186
RfeOp(const char *mnem, ExtMachInst _machInst, OpClass __opClass, IntRegIndex _base, AddrMode _mode, bool _wb)
Definition: mem.hh:105
virtual void printDest(std::ostream &os) const
Definition: mem.hh:212
bool wb
Definition: mem.hh:143
IntRegIndex urb
Definition: mem.hh:100
StaticInstPtr fetchMicroop(MicroPC microPC) const
Return the microop that goes with a particular micropc.
Definition: mem.hh:201
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
Definition: mem.cc:81
ArmShiftType
Definition: types.hh:508
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
Definition: mem.cc:95
std::string generateDisassembly(Addr pc, const SymbolTable *symtab) const
Internal function to generate disassembly string.
Definition: mem.cc:120

Generated on Fri Jun 9 2017 13:03:38 for gem5 by doxygen 1.8.6