Ch11 指令集:寻址方式和指令模式¶
符号说明:¶
-
\(A\):指令中出现的地址/数据的内容
-
\(R\):指令中出现的寄存器存储的地址/数据的内容
-
\(EA\):被访问位置的实际有效地址
-
\((X)\):位置 \(X\) 的内容
立即寻址¶
-
操作数 = \(A\)
-
优点:不要求存储访问,速度快
-
缺点:操作数范围受限
直接寻址¶
-
\(EA = A\),即实际访问位置的地址写在指令中。
-
优点:只需要一次内存引用。
-
缺点:地址范围受限。
-

间接寻址¶
-
\(EA = (A)\),即指令中存储的地址指向一个内存位置,该位置存储着实际访问位置真正的地址。
-
优点:地址范围更大。
-
缺点:需要两次内存引用(第一次获取真正地址,第二次获取实际数据)。
-

寄存器寻址(类似直接寻址)¶
-
\(EA = R\),即指令中存储的地址指向一个寄存器,实际访问内容存储在该寄存器中。
-
优点:无需内存引用;指令中寄存器地址通常较短。
-
缺点:寄存器地址空间有限。
寄存器间接寻址(类似间接寻址)¶
-
\(EA = (R)\),即指令中存储的地址指向一个寄存器,该寄存器存储着实际访问位置的真正地址。
-
优点:地址范围更大;相比间接寻址只需一次内存访问;指令内地址更短。
-

偏移寻址(寄存器间接寻址和直接寻址的结合)¶
-
\(EA = (R) + A\),实际地址由寄存器内容与指令内地址相加得到。
-
相对寻址:
- \(R = PC\),\(A\) 为补码,有效地址 = 指令地址 + 偏移量(可正可负)。
-
基址寄存器寻址:
- \((R)\) 为基址,\(A\) 为偏移量(相对寻址是其特例)。
-
变址寻址:
- \(A\) 为基址,\((R)\) 为偏移量,常用于迭代场景。
-
-

堆栈寻址¶
-
操作数在栈顶,通过指令隐式对栈顶进行操作
-
本质是通过存储在寄存器中的栈指针进行寄存器间接寻址,对栈顶元素进行操作。