void SymbolViewer::setContext( GpsimProcessor * gpsim ) { RegisterSet * registerSet = gpsim ? gpsim->registerMemory() : 0l; if ( registerSet == m_pCurrentContext ) return; m_pSymbolList->clear(); m_pGpsim = gpsim; m_pCurrentContext = registerSet; if (!m_pCurrentContext) return; connect( gpsim, SIGNAL(destroyed()), m_pSymbolList, SLOT(clear()) ); unsigned count = m_pCurrentContext->size(); for ( unsigned i = 0; i < count; ++i ) { RegisterInfo * reg = m_pCurrentContext->fromAddress(i); if ( (reg->type() == RegisterInfo::Generic) || (reg->type() == RegisterInfo::Invalid) ) continue; new SymbolViewerItem( this, reg ); } }
void SymbolViewer::setContext( GpsimProcessor * gpsim ) { RegisterSet * registerSet = gpsim ? gpsim->registerMemory() : 0l; if ( registerSet == m_pCurrentContext ) return; m_pSymbolList->clear(); m_pSymbolList->setColumnCount(2); m_pSymbolList->setRowCount(0); m_pSymbolList->setHorizontalHeaderItem(0, new QTableWidgetItem(i18n("Name"))); m_pSymbolList->setHorizontalHeaderItem(1, new QTableWidgetItem(i18n("Value"))); m_pSymbolList->horizontalHeaderItem(0)->setText(i18n("Name")); m_pSymbolList->horizontalHeaderItem(1)->setText(i18n("Value")); m_pGpsim = gpsim; m_pCurrentContext = registerSet; if (!m_pCurrentContext) return; connect( gpsim, SIGNAL(destroyed()), m_pSymbolList, SLOT(clearContents()) ); unsigned count = m_pCurrentContext->size(); for ( unsigned i = 0; i < count; ++i ) { RegisterInfo * reg = m_pCurrentContext->fromAddress(i); if (!reg) { qDebug() << " skip null register at " << i; continue; } if ( (reg->type() == RegisterInfo::Generic) || (reg->type() == RegisterInfo::Invalid) ) { continue; } qDebug() << Q_FUNC_INFO << " add reg at " << i << " info " << reg; m_pSymbolList->insertRow(i); SymbolViewerItem *itemName = new SymbolViewerItem( this, reg, 0 ); m_pSymbolList->setItem(i, 0, itemName); SymbolViewerItem *itemVal = new SymbolViewerItem( this, reg, 1 ); m_pSymbolList->setItem(i, 1, itemVal); } }
//BEGIN class RegisterSet RegisterSet::RegisterSet( pic_processor * picProcessor ) { unsigned numRegisters = picProcessor->rma.get_size(); qDebug() << "numRegisters="<<numRegisters<<endl; m_registers.resize( numRegisters ); for ( unsigned i = 0; i < numRegisters; ++i ) { RegisterInfo * info = new RegisterInfo( & picProcessor->rma[i] ); m_registers[i] = info; m_nameToRegisterMap[ info->name() ] = info; } RegisterInfo * info = new RegisterInfo( picProcessor->W ); m_registers.append( info ); m_nameToRegisterMap[ info->name() ] = info; }
//BEGIN class RegisterSet RegisterSet::RegisterSet( pic_processor * picProcessor ) { unsigned numRegisters = picProcessor->rma.get_size(); kDebug() << k_funcinfo << "numRegisters="<<numRegisters<<endl; m_registers.resize( numRegisters, 0l ); for ( unsigned i = 0; i < numRegisters; ++i ) { RegisterInfo * info = new RegisterInfo( & picProcessor->rma[i] ); m_registers[i] = info; m_nameToRegisterMap[ info->name() ] = info; } #if defined(HAVE_GPSIM_0_26) RegisterInfo * info = new RegisterInfo( picProcessor->Wreg ); // is tihs correct for "W" member? TODO #else RegisterInfo * info = new RegisterInfo( picProcessor->W ); #endif m_registers.append( info ); m_nameToRegisterMap[ info->name() ] = info; }
static llvm::MutableArrayRef<uint8_t> getDestRegister(uint8_t *context, const RegisterInfo ®) { auto bytes = reg.mutable_data(context); switch (reg.kinds[lldb::eRegisterKindLLDB]) { case lldb_cs_x86_64: case lldb_ds_x86_64: case lldb_es_x86_64: case lldb_fs_x86_64: case lldb_gs_x86_64: case lldb_ss_x86_64: return bytes.take_front(2); break; case lldb_rflags_x86_64: return bytes.take_front(4); break; default: return bytes.take_front(8); break; } }