MCPcopy Create free account
hub / github.com/CE-Programming/CEmu / disasmLine

Method disasmLine

gui/qt/mainwindow.cpp:2385–2465  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2383}
2384
2385void MainWindow::disasmLine() {
2386 bool useLabel = false;
2387 map_t::iterator sit;
2388 std::pair<map_t::iterator, map_t::iterator> range;
2389 unsigned int numLines = 1;
2390
2391 if (disasm.base != disasm.next) {
2392 disasm.base = disasm.next;
2393 if (disasm.map.count(static_cast<uint32_t>(disasm.next))) {
2394 range = disasm.map.equal_range(static_cast<uint32_t>(disasm.next));
2395
2396 numLines = 0;
2397 for (sit = range.first; sit != range.second; ++sit) {
2398 numLines++;
2399 }
2400
2401 disasm.highlight.watchR = false;
2402 disasm.highlight.watchW = false;
2403 disasm.highlight.breakP = false;
2404 disasm.highlight.pc = false;
2405
2406 disasm.instr.data.clear();
2407 disasm.instr.opcode.clear();
2408 disasm.instr.operands.clear();
2409 disasm.instr.size = 0;
2410
2411 useLabel = true;
2412 } else {
2413 disasmGet();
2414 }
2415 } else {
2416 disasmGet();
2417 }
2418
2419 if (useLabel) {
2420 range = disasm.map.equal_range(static_cast<uint32_t>(disasm.next));
2421 sit = range.first;
2422 }
2423
2424 for (unsigned int j = 0; j < numLines; j++) {
2425
2426 QString line;
2427 QString symbols;
2428
2429 if (useLabel) {
2430 if (disasm.base > 511 || (disasm.base < 512 && sit->second[0] == '_')) {
2431 line = QStringLiteral("%1 %2:")
2432 .arg(disasm.addr ? int2hex(static_cast<uint32_t>(disasm.base), 6) : QString(),
2433 QString::fromStdString(sit->second));
2434
2435 m_disasm->appendPlainText(line);
2436 }
2437
2438 if (numLines == j + 1) {
2439 useLabel = false;
2440 }
2441 sit++;
2442 } else {

Callers

nothing calls this directly

Calls 5

disasmGetFunction · 0.85
int2hexFunction · 0.85
QStringClass · 0.85
addHighlightMethod · 0.80
clearMethod · 0.45

Tested by

no test coverage detected