| 1233 | } |
| 1234 | |
| 1235 | bool MipsExpressionFunctions::parseReference(char* str, u64& referenceIndex) |
| 1236 | { |
| 1237 | for (int i = 0; i < 32; i++) |
| 1238 | { |
| 1239 | char reg[8]; |
| 1240 | std::snprintf(reg, std::size(reg), "r%d", i); |
| 1241 | if (StringUtil::Strcasecmp(str, reg) == 0 || StringUtil::Strcasecmp(str, m_cpu->getRegisterName(0, i)) == 0) |
| 1242 | { |
| 1243 | referenceIndex = i; |
| 1244 | return true; |
| 1245 | } |
| 1246 | |
| 1247 | std::snprintf(reg, std::size(reg), "f%d", i); |
| 1248 | if (StringUtil::Strcasecmp(str, reg) == 0) |
| 1249 | { |
| 1250 | referenceIndex = i | REF_INDEX_FPU; |
| 1251 | return true; |
| 1252 | } |
| 1253 | } |
| 1254 | |
| 1255 | if (StringUtil::Strcasecmp(str, "pc") == 0) |
| 1256 | { |
| 1257 | referenceIndex = REF_INDEX_PC; |
| 1258 | return true; |
| 1259 | } |
| 1260 | |
| 1261 | if (StringUtil::Strcasecmp(str, "hi") == 0) |
| 1262 | { |
| 1263 | referenceIndex = REF_INDEX_HI; |
| 1264 | return true; |
| 1265 | } |
| 1266 | |
| 1267 | if (StringUtil::Strcasecmp(str, "lo") == 0) |
| 1268 | { |
| 1269 | referenceIndex = REF_INDEX_LO; |
| 1270 | return true; |
| 1271 | } |
| 1272 | |
| 1273 | if (StringUtil::Strcasecmp(str, "target") == 0) |
| 1274 | { |
| 1275 | referenceIndex = REF_INDEX_OPTARGET; |
| 1276 | return true; |
| 1277 | } |
| 1278 | |
| 1279 | if (StringUtil::Strcasecmp(str, "load") == 0) |
| 1280 | { |
| 1281 | referenceIndex = REF_INDEX_OPLOAD; |
| 1282 | return true; |
| 1283 | } |
| 1284 | |
| 1285 | if (StringUtil::Strcasecmp(str, "store") == 0) |
| 1286 | { |
| 1287 | referenceIndex = REF_INDEX_OPSTORE; |
| 1288 | return true; |
| 1289 | } |
| 1290 | return false; |
| 1291 | } |
| 1292 |
no test coverage detected