首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LC3陷阱指令

LC3陷阱指令
EN

Stack Overflow用户
提问于 2015-04-25 06:07:49
回答 2查看 7K关注 0票数 1

这是一个给我带来很多麻烦的问题,但我需要在两周后的期末考试中理解这个问题。我不知道这是否是用词,但我不知道如何得出具体的答案。以下是一个问题:

“鲍勃计划改变LC-3陷阱指令的机制。他有两个想法:利用陷阱指令的8:11位。陷阱例程的第一条指令存储在陷阱指令中指定的地址,而不是陷阱例程的起始地址。在他的新设计中,他仍然希望实现与原来的LC-3陷阱相同的陷阱例程。计算一下每个陷阱例程在新设计中平均会有多少行指令。”

我知道陷阱有三个基本的陷阱矢量,x20,x25和x23?“多少行指令”到底是什么意思?

EN

回答 2

Stack Overflow用户

发布于 2015-04-25 08:19:56

您的班是否使用Mc Graw Hill LC-3模拟器?因为阅读他们的文本的陷阱命令,比特8:11甚至没有发送到MAR从内存,他们只是删除。只使用位7:0,因为它们指向陷阱向量表中的位置。

通过x0000到x00FF的内存位置(总共256个)可用于包含由相应的陷阱向量指定的系统调用的起始地址。这个内存区域被称为陷阱向量表。

向量表只使用它的256个可用陷阱向量中的6个,因此您可以进行250次自己的陷阱调用。

在尝试了"Bob“试图做的事情之后,我得到了以下错误:"1024不能表示为8位陷阱向量”,并且当我尝试手动填写我自己的陷阱调用(ex )时。TRAP400 .FILL xF400;是1111010万),它不会运行它的子例程。

话虽如此,你的问题只能意味着鲍勃正在制作他自己版本的LC-3,并希望增加他可以使用的陷阱向量的数量。如果是这样,那么使用位11:0,他可以有4,095个陷阱命令,或者4,089,如果你不包括原始的6。

我希望这能帮上忙。

票数 0
EN

Stack Overflow用户

发布于 2015-04-25 16:40:52

这很模糊。Trap子例程的大小与执行特定函数所需的大小相同。但是,如果只计算子例程中所需的行数,则至少需要7行(如果只希望例程返回到调用它的命令,则至少需要1行)。

看看陷阱x21的常规,我们得到:

代码语言:javascript
复制
.ORIG x0430 ; syscall address
    ST R7, SaveR7
    ST R1, SaveR1
TryWrite
    LDI R1, CRTSR
    BRzp TryWrite
WriteIt
    STI R0, CRTDR
Return
    LD R1, SaveR1
    LD R7, SaveR7
    RET
CRTSR   .FILL xFE04
CRTDR   .FILL xFE06
SaveR1  .FILL 0
SaveR7  .FILL 0
.END

我们必须在使用寄存器之前保存它们,并在运行我们的例程后加载它们。我们需要变量来存储这些寄存器,最后我们需要一个RET命令来返回到调用例程的命令。

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

https://stackoverflow.com/questions/29861666

复制
相关文章

相似问题

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