| 1394 | } |
| 1395 | |
| 1396 | bool MipsExpressionFunctions::getMemoryValue(u32 address, int size, u64& dest, std::string& error) |
| 1397 | { |
| 1398 | switch (size) |
| 1399 | { |
| 1400 | case 1: |
| 1401 | case 2: |
| 1402 | case 4: |
| 1403 | case 8: |
| 1404 | break; |
| 1405 | default: |
| 1406 | error = StringUtil::StdStringFromFormat( |
| 1407 | TRANSLATE("ExpressionParser", "Invalid memory access size %d."), size); |
| 1408 | return false; |
| 1409 | } |
| 1410 | |
| 1411 | if (address % size) |
| 1412 | { |
| 1413 | error = TRANSLATE("ExpressionParser", "Invalid memory access (unaligned)."); |
| 1414 | return false; |
| 1415 | } |
| 1416 | |
| 1417 | switch (size) |
| 1418 | { |
| 1419 | case 1: |
| 1420 | dest = m_cpu->Read8(address); |
| 1421 | break; |
| 1422 | case 2: |
| 1423 | dest = m_cpu->Read16(address); |
| 1424 | break; |
| 1425 | case 4: |
| 1426 | dest = m_cpu->Read32(address); |
| 1427 | break; |
| 1428 | case 8: |
| 1429 | dest = m_cpu->Read64(address); |
| 1430 | break; |
| 1431 | } |
| 1432 | |
| 1433 | return true; |
| 1434 | } |
no test coverage detected