MCPcopy Create free account
hub / github.com/GJDuck/e9patch / dumpVal

Function dumpVal

src/e9tool/e9action.cpp:1426–1537  ·  view source on GitHub ↗

* Dump a value. */

Source from the content-addressed store, hash-verified

1424 * Dump a value.
1425 */
1426static void dumpVal(const MatchVal &val, std::string &str, bool hex = false)
1427{
1428 switch (val.type)
1429 {
1430 case MATCH_TYPE_UNDEFINED:
1431 str += "undefined"; return;
1432 case MATCH_TYPE_NIL:
1433 str += "nil"; return;
1434 case MATCH_TYPE_INTEGER:
1435 if (!hex)
1436 str += std::to_string(val.i);
1437 else
1438 {
1439 std::stringstream ss;
1440 ss << std::hex << val.i;
1441 str += "0x";
1442 str += ss.str();
1443 }
1444 return;
1445 case MATCH_TYPE_OPERAND:
1446 switch (val.op)
1447 {
1448 case OPTYPE_IMM:
1449 str += "imm"; return;
1450 case OPTYPE_REG:
1451 str += "reg"; return;
1452 case OPTYPE_MEM:
1453 str += "mem"; return;
1454 default:
1455 str += "???"; return;
1456 }
1457 case MATCH_TYPE_ACCESS:
1458 switch (val.access)
1459 {
1460 case 0:
1461 str += '-'; return;
1462 case ACCESS_READ:
1463 str += 'r'; return;
1464 case ACCESS_WRITE:
1465 str += 'w'; return;
1466 case ACCESS_READ | ACCESS_WRITE:
1467 str += "rw"; return;
1468 default:
1469 str += "???"; return;
1470 }
1471 case MATCH_TYPE_REGISTER:
1472 str += getRegName(val.reg); return;
1473 case MATCH_TYPE_MEMORY:
1474 str += "mem";
1475 str += std::to_string(8 * val.mem.size);
1476 str += '<';
1477 if (val.mem.seg != REGISTER_NONE)
1478 {
1479 str += getRegName(val.mem.seg);
1480 str += ':';
1481 }
1482 if (val.mem.disp != 0)
1483 str += std::to_string(val.mem.disp);

Callers 5

dumpExprFunction · 0.85
compareMethod · 0.85
matchCastToBoolFunction · 0.85
matchDoEvalFunction · 0.85
matchEvalFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected