LC-3架构C++实现调试求助:首条LD指令执行异常
LC-3模拟器LD指令执行异常调试求助
我正在用C++实现LC-3架构,参考了一份C语言的LC-3虚拟机教程。代码已经写完,编译运行时传入待执行的obj文件,但卡在了首条LD指令的执行环节。
首条指令(LD)的执行代码如下:
case Registry::OP_LD: { uint16_t r0 = (instr >> 9) & 0x7; uint16_t pc_offset = m_registry->sign_extend(instr & 0x1FF, 9); printf("m_memory: %p\n", m_memory); printf("m_registry: %p\n", m_registry); printf("\n\n\n\n\n\n"); printf("m_memory[0]: %d\n", m_memory->read(0)); printf("m_registry[0]: %d\n", m_registry->get(0)); printf("\n\n\n\n\n\n"); printf("R0: %d\n", r0); printf("pc_offset: %d\n", pc_offset); printf("Reg 0: %d\n", m_registry->get(r0)); printf("mem read: %d\n", m_memory->read(m_registry->get(static_cast<uint16_t>(Registry::R_PC)) + pc_offset)); m_registry->set(r0, m_memory->read(m_registry->get(static_cast<uint16_t>(Registry::R_PC)) + pc_offset)); printf("Reg 0 bis: %d\n", m_registry->get(r0)); m_registry->update_flags(r0); }
添加printf调试后,部分输出如下:
m_memory: 0x7f5c20645010
m_registry: 0x558784821ef0
m_memory[0]: 0
m_registry[0]: 0
R0: 6
pc_offset: 23
Reg 0: 61477
mem read: 61477
Reg 0 bis: 61477
从输出看寄存器和内存取值存在异常,但不清楚具体调试方向,求调试帮助。完整源代码和测试文件可查看归档文件。
内容的提问来源于stack exchange,提问作者Rémi boivin
相关产品推荐
相关产品推荐

