我目前正在使用M68000学习汇编语言,并且无法弄清楚如何使用TRAP 5到13指令。我似乎无法在网上找到任何创建自己的TRAP指令的例子。例如,如何编写一个简单的TRAP#6指令来切换处理器的状态。 (用户状态或主管状态)。
答案 0 :(得分:3)
编写陷阱处理程序并非易事,特别是切换权限模式很多(因为它不仅会更改权限模式,还会在CPU具有的两个或三个堆栈指针之间切换:USP / MSP / ISP)。 / p>
下一个障碍是每个68K系列成员使用自己的一组堆栈帧,这意味着推送到SSP上的内容根据实际的CPU型号而不同(68000是最差的"罪犯,因为原始的堆栈帧集没有识别字段,与具有共同帧格式指示符字的较高模型不同。 M68K Familiy手册中记录了堆栈帧格式,您可以在线找到它。
第三个问题是实际安装你的处理程序。您必须在内存中找到陷阱的向量,除了68000到VBR寄存器外,它可以重新定位到所有68K CPU中的任何地址。更不用说您无法在用户模式下访问VBR。
第四,陷阱向量几乎总是在OS控制之下,因此更改陷阱向量可能会破坏系统。用户陷阱向量可能通过OS特定方式支持也可能不支持。
对于只是 68000的工作演示,您可以从系列手册中查找向量编号和堆栈帧格式,并将该向量指向您自己的代码。我建议从一些简单的开始,例如只更改陷阱处理程序中的寄存器值,然后在尝试特权更改等特技之前确认它是否有效。