1// Copyright (c) 2006-2007 The Regents of The University of Michigan 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 --- 86 unchanged lines hidden (view full) --- 95 std::string BlockMemMicro::generateDisassembly(Addr pc, 96 const SymbolTable *symtab) const 97 { 98 std::stringstream response; 99 bool load = flags[IsLoad]; 100 bool save = flags[IsStore]; 101 102 printMnemonic(response, mnemonic); |
103 if (save) { |
104 printReg(response, _srcRegIdx[0]); 105 ccprintf(response, ", "); 106 } 107 ccprintf(response, "[ "); 108 printReg(response, _srcRegIdx[!save ? 0 : 1]); 109 ccprintf(response, " + "); 110 printReg(response, _srcRegIdx[!save ? 1 : 2]); 111 ccprintf(response, " ]"); |
112 if (load) { |
113 ccprintf(response, ", "); 114 printReg(response, _destRegIdx[0]); 115 } 116 117 return response.str(); 118 } 119 120 std::string BlockMemImmMicro::generateDisassembly(Addr pc, 121 const SymbolTable *symtab) const 122 { 123 std::stringstream response; 124 bool load = flags[IsLoad]; 125 bool save = flags[IsStore]; 126 127 printMnemonic(response, mnemonic); |
128 if (save) { |
129 printReg(response, _srcRegIdx[1]); 130 ccprintf(response, ", "); 131 } 132 ccprintf(response, "[ "); 133 printReg(response, _srcRegIdx[0]); |
134 if (imm >= 0) |
135 ccprintf(response, " + 0x%x ]", imm); 136 else 137 ccprintf(response, " + -0x%x ]", -imm); |
138 if (load) { |
139 ccprintf(response, ", "); 140 printReg(response, _destRegIdx[0]); 141 } 142 143 return response.str(); 144 } 145 146}}; 147 148def template BlockMemDeclare {{ 149 /** 150 * Static instruction class for a block memory operation 151 */ 152 class %(class_name)s : public %(base_class)s 153 { 154 public: |
155 // Constructor |
156 %(class_name)s(ExtMachInst machInst); 157 158 protected: 159 class %(class_name)s_0 : public %(base_class)sMicro 160 { 161 public: |
162 // Constructor |
163 %(class_name)s_0(ExtMachInst machInst); 164 %(BasicExecDeclare)s 165 %(InitiateAccDeclare)s 166 %(CompleteAccDeclare)s 167 }; 168 169 class %(class_name)s_1 : public %(base_class)sMicro 170 { 171 public: |
172 // Constructor |
173 %(class_name)s_1(ExtMachInst machInst); 174 %(BasicExecDeclare)s 175 %(InitiateAccDeclare)s 176 %(CompleteAccDeclare)s 177 }; 178 179 class %(class_name)s_2 : public %(base_class)sMicro 180 { 181 public: |
182 // Constructor |
183 %(class_name)s_2(ExtMachInst machInst); 184 %(BasicExecDeclare)s 185 %(InitiateAccDeclare)s 186 %(CompleteAccDeclare)s 187 }; 188 189 class %(class_name)s_3 : public %(base_class)sMicro 190 { 191 public: |
192 // Constructor |
193 %(class_name)s_3(ExtMachInst machInst); 194 %(BasicExecDeclare)s 195 %(InitiateAccDeclare)s 196 %(CompleteAccDeclare)s 197 }; 198 199 class %(class_name)s_4 : public %(base_class)sMicro 200 { 201 public: |
202 // Constructor |
203 %(class_name)s_4(ExtMachInst machInst); 204 %(BasicExecDeclare)s 205 %(InitiateAccDeclare)s 206 %(CompleteAccDeclare)s 207 }; 208 209 class %(class_name)s_5 : public %(base_class)sMicro 210 { 211 public: |
212 // Constructor |
213 %(class_name)s_5(ExtMachInst machInst); 214 %(BasicExecDeclare)s 215 %(InitiateAccDeclare)s 216 %(CompleteAccDeclare)s 217 }; 218 219 class %(class_name)s_6 : public %(base_class)sMicro 220 { 221 public: |
222 // Constructor |
223 %(class_name)s_6(ExtMachInst machInst); 224 %(BasicExecDeclare)s 225 %(InitiateAccDeclare)s 226 %(CompleteAccDeclare)s 227 }; 228 229 class %(class_name)s_7 : public %(base_class)sMicro 230 { 231 public: |
232 // Constructor |
233 %(class_name)s_7(ExtMachInst machInst); 234 %(BasicExecDeclare)s 235 %(InitiateAccDeclare)s 236 %(CompleteAccDeclare)s 237 }; 238 }; 239}}; 240 --- 101 unchanged lines hidden --- |