R3 不应该保存地址 x3307 吗?
Shouldn't R3 hold address x3307?
我正在做 Question 7 的练习题
我高亮显示的地址不应该是x3307,不是x3308吗?
我的推理方式是(第 2 条指令前的 PC)=(第 1 条指令后的 PC)。
第一条指令后的PC是x3301。因此当第二条指令执行时,PC,x3301 将增加 6 到 x3307.
大家同意吗?还是我错过了什么,R3 实际上应该存储 x3308?
PC 相对偏移量应用于已经增加的 PC 之上,即 PC 的 "after" 值,或者换句话说,后续指令的地址。
来自 Patt & Patel 的附录 A,符号约定 (Table A.1) 对 PC 的描述如下:
Program Counter; 16-bit register that contains the memory address of the next instruction to be fetched. For example, during execution of the instruction at address A
, the PC contains address A + 1
, indicating the next instruction is contained in A + 1
.
LEA
操作码的规范说:
An address is computed by sign-extending bits [8:0] to 16 bits and
adding this value to the incremented PC.
所以当第二条指令被执行时'incremented PC'是0x3302
。将 6 添加到 0x3308
.
我正在做 Question 7 的练习题
我高亮显示的地址不应该是x3307,不是x3308吗?
我的推理方式是(第 2 条指令前的 PC)=(第 1 条指令后的 PC)。
第一条指令后的PC是x3301。因此当第二条指令执行时,PC,x3301 将增加 6 到 x3307.
大家同意吗?还是我错过了什么,R3 实际上应该存储 x3308?
PC 相对偏移量应用于已经增加的 PC 之上,即 PC 的 "after" 值,或者换句话说,后续指令的地址。
来自 Patt & Patel 的附录 A,符号约定 (Table A.1) 对 PC 的描述如下:
Program Counter; 16-bit register that contains the memory address of the next instruction to be fetched. For example, during execution of the instruction at address
A
, the PC contains addressA + 1
, indicating the next instruction is contained inA + 1
.
LEA
操作码的规范说:
An address is computed by sign-extending bits [8:0] to 16 bits and adding this value to the incremented PC.
所以当第二条指令被执行时'incremented PC'是0x3302
。将 6 添加到 0x3308
.