mem.hh (6303:cb190056165e) mem.hh (6305:e518d78b2ed1)
1/* Copyright (c) 2007-2008 The Florida State University
2 * All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met: redistributions of source code must retain the above copyright
7 * notice, this list of conditions and the following disclaimer;
8 * redistributions in binary form must reproduce the above copyright

--- 28 unchanged lines hidden (view full) ---

37 * Base class for general Arm memory-format instructions.
38 */
39class Memory : public PredOp
40{
41 protected:
42
43 /// Memory request flags. See mem_req_base.hh.
44 unsigned memAccessFlags;
1/* Copyright (c) 2007-2008 The Florida State University
2 * All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met: redistributions of source code must retain the above copyright
7 * notice, this list of conditions and the following disclaimer;
8 * redistributions in binary form must reproduce the above copyright

--- 28 unchanged lines hidden (view full) ---

37 * Base class for general Arm memory-format instructions.
38 */
39class Memory : public PredOp
40{
41 protected:
42
43 /// Memory request flags. See mem_req_base.hh.
44 unsigned memAccessFlags;
45 /// Pointer to EAComp object.
46 const StaticInstPtr eaCompPtr;
47 /// Pointer to MemAcc object.
48 const StaticInstPtr memAccPtr;
49
50 /// Displacement for EA calculation (signed).
51 int32_t disp;
52 int32_t disp8;
53 int32_t up;
54 int32_t hilo,
55 shift_size,
56 shift;
57
58 /// Constructor
45
46 /// Displacement for EA calculation (signed).
47 int32_t disp;
48 int32_t disp8;
49 int32_t up;
50 int32_t hilo,
51 shift_size,
52 shift;
53
54 /// Constructor
59 Memory(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
60 StaticInstPtr _eaCompPtr = nullStaticInstPtr,
61 StaticInstPtr _memAccPtr = nullStaticInstPtr)
55 Memory(const char *mnem, ExtMachInst _machInst, OpClass __opClass)
62 : PredOp(mnem, _machInst, __opClass),
63 memAccessFlags(0),
56 : PredOp(mnem, _machInst, __opClass),
57 memAccessFlags(0),
64 eaCompPtr(_eaCompPtr), memAccPtr(_memAccPtr),
65 disp(machInst.immed11_0),
66 disp8(machInst.immed7_0 << 2),
67 up(machInst.puswl.up),
68 hilo((machInst.immedHi11_8 << 4) | machInst.immedLo3_0),
69 shift_size(machInst.shiftSize), shift(machInst.shift)
70 {
71 }
72
73 std::string
74 generateDisassembly(Addr pc, const SymbolTable *symtab) const;
58 disp(machInst.immed11_0),
59 disp8(machInst.immed7_0 << 2),
60 up(machInst.puswl.up),
61 hilo((machInst.immedHi11_8 << 4) | machInst.immedLo3_0),
62 shift_size(machInst.shiftSize), shift(machInst.shift)
63 {
64 }
65
66 std::string
67 generateDisassembly(Addr pc, const SymbolTable *symtab) const;
75
76 public:
77
78 const StaticInstPtr &eaCompInst() const { return eaCompPtr; }
79 const StaticInstPtr &memAccInst() const { return memAccPtr; }
80};
81
82 /**
83 * Base class for a few miscellaneous memory-format insts
84 * that don't interpret the disp field
85 */
86class MemoryNoDisp : public Memory
87{
88 protected:
89 /// Constructor
68};
69
70 /**
71 * Base class for a few miscellaneous memory-format insts
72 * that don't interpret the disp field
73 */
74class MemoryNoDisp : public Memory
75{
76 protected:
77 /// Constructor
90 MemoryNoDisp(const char *mnem, ExtMachInst _machInst, OpClass __opClass,
91 StaticInstPtr _eaCompPtr = nullStaticInstPtr,
92 StaticInstPtr _memAccPtr = nullStaticInstPtr)
93 : Memory(mnem, _machInst, __opClass, _eaCompPtr, _memAccPtr)
78 MemoryNoDisp(const char *mnem, ExtMachInst _machInst, OpClass __opClass)
79 : Memory(mnem, _machInst, __opClass)
94 {
95 }
96
97 std::string
98 generateDisassembly(Addr pc, const SymbolTable *symtab) const;
99};
100}
101
102#endif //__ARCH_ARM_INSTS_MEM_HH__
80 {
81 }
82
83 std::string
84 generateDisassembly(Addr pc, const SymbolTable *symtab) const;
85};
86}
87
88#endif //__ARCH_ARM_INSTS_MEM_HH__