这是一个给我带来很多麻烦的问题,但我需要在 2 周内的期末考试中理解。我不知道这是否是措辞,但我不知道如何得出具体答案。这是问题:
“鲍勃计划对 LC-3 TRAP 指令的机制进行更改。他有两个想法:利用 TRAP 指令的位 [8:11]。陷阱例程的第一条指令存储在 TRAP 指令中指定的地址,而不是陷阱例程的起始地址。在他的新设计中,他仍然希望实现与原始 LC-3 TRAP 一样多的 TRAP 例程。计算他的新设计中平均有多少行指令。”
我知道 TRAP 有 3 个基本的 TRAP 向量,x20,x25 和 x23?“多少行指令”甚至是什么意思?
您的班级是否使用 Mc Graw Hill LC-3 Simulator?因为在 TRAP 命令上通读其文本,位 [8:11] 甚至没有发送到 MAR 以从内存加载,所以它们只是被丢弃。仅使用位 [7:0],因为它们指向陷阱向量表中的位置。
内存位置 x0000 到 x00FF(共 256 个)可用于包含由其相应陷阱向量指定的系统调用的起始地址。此内存区域称为陷阱向量表。
Vector 表只使用其 256 个可用陷阱向量中的 6 个,因此您可以进行 250 个自己的陷阱调用。
尝试什么“鲍勃”试图做我得到以下错误“1024 不能表示为 8 位陷阱向量”,当我尝试手动填写我自己的陷阱调用(例如 TRAP400.FILL xF400;这是 1111 0100 0000 0000)它不会运行其子例程。
话虽如此,你的问题只能意味着鲍勃正在制作他自己的版本的 LC-3,并希望增加他可以使用的陷阱向量的数量。
我希望有帮助。
但是如果你只计算一个子程序中需要的required行,那么你至少需要 7 行 (如果你只想让你的例程返回到调用它的命令,则需要 1 行)。
查看 TRAP x21 的例程,我们得到:
.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 命令返回到调用该例程的命令。
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(21条)