小编Jet*_*ura的帖子

在C++的功能ISA模拟器上实现陷阱(异常/ intterupts)

我尝试实现功能ISA模拟器:目标是RISC-V和MIPS.这是一步一步的指令翻译.

抽象步骤:

while(num_steps)
{
    try
    {
        take_interrupt();// take pending interrupts
        fetch(); // fetch instruction from memory
        decode(); // find handler to instruction
        execute(); // perform instruction
    } 
    catch (Trap& e)
    {
        take_trap(e); //configure appropriate system registers and jump to trap vector.
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,C++异常用于传输控制流.也许有更帅气的设计?

问题:在功能性ISA模拟器上实现陷阱的最佳方法/实践是什么.我也对翻译模拟器的异常/陷阱实现感兴趣,比如QEMU.

注意:通过单词trap我的意思是ISA定义的陷阱,而不是应用程序错误:未对齐的内存访问,非法指令,系统寄存器访问错误,权限级别更改等.

c++ qemu mips emulation riscv

4
推荐指数
1
解决办法
510
查看次数

标签 统计

c++ ×1

emulation ×1

mips ×1

qemu ×1

riscv ×1