在家庭作业中我们要追踪一个信用卡的密码-3机器第一行代码是0x 3000 1110 001 00001111,这是R1目的地的莱亚。我被PC偏移量弄糊涂了。如果我读对了,它是十进制的31或十六进制的1F。但是我们得到的信息范围是0x 3020到0x 3025。我做错什么了吗?我试着阅读我们的书和复习课堂笔记,但老师只是给了我们一个答案,而没有解释他是如何得到这个答案的。
xoshrz7s1#
你已经有了PC偏移-它是31。您要查找的是 * 有效地址 *(也称为内存位置),它由位于0x 3000的指令的PC偏移量31引用。对于LEA(以及其他使用PCoffset9的),这被定义为:effectiveAddress = PC 1 + SEXT(PCoffset9)对于莱亚,则DR = effectiveAddress其中莱亚指令具有以下格式:
LEA
PCoffset9
effectiveAddress
PC
SEXT
DR
1110:4 DR:3 PCoffset:9
字符串
PCoffset
1增量PC。从位置0x 3000开始,递增的PC为0x 3001,而SEXT(31)为31,因此0x 3001 + 31是计算到R1中的值。
SEXT(31)
R1
1条答案
按热度按时间xoshrz7s1#
你已经有了PC偏移-它是31。
您要查找的是 * 有效地址 *(也称为内存位置),它由位于0x 3000的指令的PC偏移量31引用。
对于
LEA
(以及其他使用PCoffset9
的),这被定义为:effectiveAddress
=PC
1 +SEXT
(PCoffset9
)对于莱亚,则
DR
=effectiveAddress
其中莱亚指令具有以下格式:
字符串
LEA
的4位操作码DR
:3是目标寄存器的3位数PCoffset
:9作为9位立即数1增量PC。
从位置0x 3000开始,递增的PC为0x 3001,而
SEXT(31)
为31,因此0x 3001 + 31是计算到R1
中的值。