LC3陷阱执行非法向量编号

时间:2016-04-03 22:27:36

标签: lc3

我正在尝试计算LC3模拟器中的字符数,并继续“使用非法矢量编号执行陷阱”。 这些是我执行的对象

charcount.obj:

00110000亿

0101010010100000 0010011000010000 1111000000100011 01100010.11亿 0001100001111100 0000010000001000 1001001001111111 0001001001100001 00010010.01亿 0000101000000001 0001010010100001 0001011011100001 01100010.11亿 0000111111110110 0010000000000100 0001000000000010 1111000000100001 1111000000100101 1110001011111111 0000000000110000

和诗:     .ORIG x3100

.STRINGZ "Simple Simon met a pieman,"
.STRINGZ "Going to the fair;"
.STRINGZ "Says Simple Simon to the pieman,"
.STRINGZ "Let me taste your ware."

.FILL   x04

.END

1 个答案:

答案 0 :(得分:0)

在我们为您提供帮助之前,我们似乎需要更多信息。我知道你为我们提供了一些二进制文件,我通过LC3模拟器运行了它。在这里,我有点迷失,您想要计算哪个字符串以及存储在哪里?

在尝试拼凑您在此提供的内容后,我发现了什么。

寄存器:

R0   x0061  97
R1   x0000  0
R2   x0000  0
R3   xE2FF  -7425
R4   x0000  0
R5   x0000  0
R6   x0000  0
R7   x3003  12291
PC   x3004  12292
IR   x62C0  25280
CC   Z

内存:

x3000  0101010010100000  x54A0            AND    R2, R2, #0     
x3001  0010011000010000  x2610            LD     R3, x3012      
x3002  1111000000100011  xF023            TRAP   IN             
x3003  0110001011000000  x62C0            LDR    R1, R3, #0     
x3004  0001100001111100  x187C            ADD    R4, R1, #-4    
x3005  0000010000001000  x0408            BRZ    x300E          
x3006  1001001001111111  x927F            NOT    R1, R1         
x3007  0001001001100001  x1261            ADD    R1, R1, #1     
x3008  0001001001000000  x1240            ADD    R1, R1, R0     
x3009  0000101000000001  x0A01            BRNP   x300B          
x300A  0001010010100001  x14A1            ADD    R2, R2, #1     
x300B  0001011011100001  x16E1            ADD    R3, R3, #1     
x300C  0110001011000000  x62C0            LDR    R1, R3, #0     
x300D  0000111111110110  x0FF6            BRNZP  x3004          
x300E  0010000000000100  x2004            LD     R0, x3013      
x300F  0001000000000010  x1002            ADD    R0, R0, R2     
x3010  1111000000100001  xF021            TRAP   OUT            
x3011  1111000000100101  xF025            TRAP   HALT           
x3012  1110001011111111  xE2FF            LEA    R1, x3112      
x3013  0000000000110000  x0030            NOP                   

寄存器中显示的值是我在第x3003行后停止时得到的值。由于某种原因,xE2FF的字面值被加载到寄存器R3中。之后,将内存位置xE2FF的值0加载到寄存器R1中,然后从那里安装问题。

我建议您显示您的asm代码,然后对每一行进行评论,以便我们更好地了解您尝试完成的内容。