PDP 字节序和位移位

Dar*_*bik 2 assembly bit-manipulation endianness

当您在 PDP 字节序中进行位移时,此操作是否比在小字节序或大字节序系统上花费的时间稍长一些?

我问这个问题的原因是因为对于计算机来说,似乎很难在一个班次中向各个方向传输位。

我无法以任何方式测试这一点,因为我无法访问 PDP 字节序机器。=(

fuz*_*fuz 6

PDP11 的中端格式源于在 16 位机器上模拟 32 位操作的需要。这是通过首先将高位字存储在存储器中,然后再存储低位字来完成的,即使 PDP11 使用小尾数法存储其数据。这会导致奇怪的字节顺序。不过,实际上并没有真正的性能差异。将存储在内存中的整数左移一位仍然需要三个指令来完成:

mov #var+2,r0 ; load the address of the low word
asl (r0)      ; left shift low word
rol -(r0)     ; left shift high word with carry
Run Code Online (Sandbox Code Playgroud)

如果var以小端存储,代码将类似:

mov #var,r0   ; load address of the low word
asl (r0)+     ; left shift low word
rol (r0)      ; left shift high word
Run Code Online (Sandbox Code Playgroud)

  • 我*认为*OP 正在想象在一次操作中移动 PDP-endian 32 位字,并且执行此操作的硬件会比这些位只能从右到左移动更复杂(这就是为什么我我的回答集中在这一部分)。赞成指出 PDP-11 是 16 位机器和实际代码序列。 (2认同)