首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用自定义LC-3陷阱例程

使用自定义LC-3陷阱例程
EN

Stack Overflow用户
提问于 2014-10-19 12:44:51
回答 1查看 2K关注 0票数 0

我通过陷阱x26编写了一个子例程作为陷阱调用。我的子例程的代码位于地址x3300。我不知道如何在x3300中子例程从x26跳转到我的实际指令,因为差距大于JSR的PC偏移量参数所允许的范围。我知道我可以在x26附近添加一些代码,让它可以一直跳到x3300,但我不认为我应该这样做。我想我在理解陷阱的时候遗漏了一些东西。

下面是我对陷阱的理解/困惑: x0000 - X00FF中的陷阱向量表。例如,如果调用TRAP x20,则PC转到x20并继续执行x20中的指令。(如果这是不正确的,请告诉我!)此时我感到困惑,因为在LC-3的地址x20处是一条BRZ x0021命令,它会将PC带到x21。在x21中,有一个BRZ x52命令。当执行此分支以转到x52和PC时,其中的命令为TRAP x00。Trap 20的大多数命令似乎都指向这些(看起来像是)无意义的陷阱命令。在执行陷阱x00之后,程序转到xFD79。这真的让我很困惑,因为在内存中的x00中,只有另一个TRAP x00。在我看来,程序应该转到x00而不是xFD79。

有人能帮我解释一下吗?当一个陷阱被调用时,究竟发生了什么?我认为它只是转到内存中的另一个地址,即指令的实际代码所在的位置,并执行该地址,但我所看到的并没有反映出这一点。任何帮助都非常感谢,因为这阻止了我现在完成一个学校项目。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-10-20 16:27:57

因此,来自x0000 - X00FF的是陷阱向量表。例如,如果调用陷阱x20,则PC转到x20并继续执行x20处的指令。(如果这是错误的,请告诉我!)

这是正确的,但是下一句话...

在这一点上,我感到困惑,因为LC-3中地址x20处的BRZ x0021命令会将PC带到x21

您看到的看起来像BRz的命令实际上并不是一条指令。这是一个地址!x0400将是一个相当无用的命令-如果PC偏移量为零,那么它只会转到下一行。如果将其解释为地址,并将其作为陷阱调用的一部分转到该地址,则会找到其余的陷阱指令。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26447401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档