首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PDP端移和位移位

PDP端移和位移位
EN

Stack Overflow用户
提问于 2016-07-23 00:27:14
回答 3查看 1.8K关注 0票数 2

当您在PDP终端中做一点移位时,这个操作是否比在一个小的或大的endian系统上的运行时间要长一点?

我之所以问这个问题,是因为它似乎是在一次变换中向四面八方移动,对一台计算机来说是很难做到的。

任何方法我都无法测试这一点,因为我没有对PDP终端机器的访问权限。=(

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-23 08:11:03

PDP11的中间端格式是由于需要在16位机器上模拟32位操作而产生的。这是通过首先存储高单词,然后在内存中存储低字来完成的,尽管PDP11对其数据使用了很少的endian。这就导致了奇怪的恩典。然而,在实践中并没有真正的性能差异。将存储在内存中的整数左移一个位置仍然需要三条指令:

代码语言:javascript
复制
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

如果var存储在小endian中,代码将类似于:

代码语言:javascript
复制
move #var,r0   ; load address of the low word
asl (r0)+      ; left shift low word
rol (r0)       ; left shift high word
票数 5
EN

Stack Overflow用户

发布于 2016-07-23 03:56:09

只有当您存储一个单词,然后单独查看字节时,才能观察到Endianness。

在任何类型的机器上,寄存器中的数据总是以二进制的形式运行,而MSB位于左边(就像您在0b10110101这样的位置值表示中写入它一样)。左移位总是乘以2的幂,而右移位总是除以2的幂,不管机器是大的、小的,还是pdp-endian的。

当执行负载或存储大于一个字节时,可以将endianness应用于CPU的负载存储单元中。核心部分的寄存器和执行单元只看到寄存器宽度的二进制整数。

可以编写“终端不可知论”代码将整数序列化到字节流或从字节流中,而不依赖于机器的本机endianness。例如,要将4个字节提取到一个int中,在本例中使用字节流的小端点顺序:

代码语言:javascript
复制
i = (data[0]<<0) | (data[1]<<8) | (data[2]<<16) | (data[3]<<24);

(这确实假定为32位int,因为在转换之前我们不会转换为uint32_t。我们假设32位文件数据是每char8位。)

票数 2
EN

Stack Overflow用户

发布于 2016-07-23 02:48:07

中间端或PDP端系统首先保存最重要的单词,每个字的有效字节优先。对于新软件的开发人员来说,忽略这种可能性不仅是完全合理的,而且是强烈建议的。我认为从来没有处理器以中间端格式将32位整数值存储到内存中,尽管中间endianness偶尔出现在诸如填充十进制格式、浮点格式和模糊通信协议(用于Visa的"Visa Base I“协议中的TCP/IP数据包长度)等方面。

我想这就是答案。

当你说“换班”的时候,你的意思是“有点换班”?

可以这样想,如果一个处理器确实支持这种功能,那么它很可能有指令来执行这样的各种功能。有些处理器一次只向外移动一位,无论如何,进入进位位或旋转。因此,无论什么情况下,同样的速度都是不相关的。

其他人也一样。如果您正在查看它并将其作为字节进行操作,则您只是为了使其缓慢和痛苦而使其缓慢和痛苦。但是字节是无意义的,所以这并不重要。

你正在与文字打交道(希望如此),而其中的一种迷恋就会消失。但是,即使每一个其他单词--一个不同的端点--你有能力读任何一种(可能在许多处理器上都可以)--你仍然不在乎你仍然在一个词中转换位,在那个点上,endianness也消失了。

在神话中同样的网页。

PDP-11为“中端”。只是某种程度上。PDP-11没有指令将32位值存储到内存中,因此特殊的“中间端”值不可能应用于它在内存中存储值的方式。它以通常的小终端方式将16位值存储到内存中。它可以执行32位算术运算,将值存储在16位CPU寄存器(而不是内存)的对子中。最有意义的单词进入了较低的编号寄存器,但在每个寄存器中,值存储得很少-endian。因此,这可以被看作是“中端”,但在某种意义上,这对汇编语言程序员和编译器编写人员来说才是重要的,他们的代码无论如何都不可能是可移植的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38536969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档