我一直在看MIPS指令表中的偏移字,如this one:
+--------------------------------------------------------------+
| BEQ |
+--------------------------------------------------------------+
| Description: |
| |
| Branches if the two registers are equal |
+--------------------------------------------------------------+
| Operation: |
| |
| if $s == $t advance_pc (offset << 2)); else advance_pc (4); |
+--------------------------------------------------------------+
| Syntax: |
| |
| beq $s, $t, offset |
+--------------------------------------------------------------+
| Encoding: |
| |
| 0001 00ss ssst tttt iiii iiii iiii iiii |
+--------------------------------------------------------------+
什么是偏见?
答案 0 :(得分:1)
在拓扑方面,偏移是有序集中的移动向量。当且仅当存在起始元素时,偏移才是可定义的,与您定义移动相比。我们假设你有几何点
(x1,...,xn)
如果需要从此点开始移动移动,则可以将偏移矢量定义为
(o1,...,on)
,结果点是:
(x1 + o1,...,xn + on)
如果您有一个有序列表,那么o的数字偏移量会告诉您应该使用的索引。
在计算机科学中,数组或其他数据结构中的偏移量 object是一个整数,表示距离的位移(位移) 可能是对象的开始直到给定的元素或点 在同一个对象中。距离的概念仅在全部有效时才有效 对象的元素大小相同(通常以字节为单位) 或者单词)。
取自here。但是,引用稍微不准确,因为距离不需要具有相等大小的对象,依赖性是度量空间的存在。此外,引用告诉您必须在代数结构中有一个最小的元素,这不是一个依赖。更一般地说,你需要有一个明确定义的起点。
在您的特定情况下,offset是一个以字节为单位的数值,表示来自内存中某个位置的移动向量。注意,32位是四个字节,这就是为什么你有一个4的偏移量。
答案 1 :(得分:0)
一个较少的数学解释:分支与程序计数器相关。偏移量表示与“当前”PC值的距离是多远(偏移以添加到PC以到达目的地)。在汇编中,偏移量通常由汇编程序计算,因此您只需将目标放在那里