不懂就问: 32 位 CPU 是不是执行 4 字节的数据是一个指令,执行 1 个字节的数据也是一个指令。

2020-04-16 19:10:05 +08:00
 BigDogWang
是不是一次运算数据只要小于 32 位,数据大小对于指令数不会产生影响?
1082 次点击
所在节点    问与答
5 条回复
yuekunlun
2020-04-16 19:24:03 +08:00
1 、首先要看硬件架构
2 、要看具体指令

对 x86 架构 mov load 这种是原子的
Mohanson
2020-04-16 19:24:43 +08:00
太宽泛了,举个例子,如果两个 u8 相加,u8 会先 zero extend 或 sign extend 成 u32 到 32 位寄存器中然后执行两个 u32 加法;

但是 extend 并非单独的指令,而是 u8 加法 alu 的一部分。
Mohanson
2020-04-16 19:25:58 +08:00
误,是 load 的一部分,extend 操作是 load 指令的一部分
dapang1221
2020-04-16 19:29:02 +08:00
虽然确实是这样,但这问题有点怪,运算数据不是“只要小于 32”,而是只能等于 32,因为数据线的宽度就是 32,一次肯定只能载入一个数据,否则加法器的进位全乱了没法用了。。
BigDogWang
2020-04-16 19:30:27 +08:00
有这个问题是在看 《程序是怎么跑起来的》 这本书有的疑问。
具体点的说法就是:
在工作频率相同的情况下,处理大于 32 位的数据时 64 位处理器,要比 32 位快;
但是如果处理的数据都小于 32 位,是不是 64 位和 32 位的速度是一样的?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/663187

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX