You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 05:10:27