首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在CPU体系结构中按位的布尔和移位操作称为逻辑操作?

为什么在CPU体系结构中按位的布尔和移位操作称为逻辑操作?
EN

Stack Overflow用户
提问于 2022-08-30 15:18:26
回答 1查看 95关注 0票数 1

这幅图片来自“计算机组织与设计”一书:

如您所见,左边的列被标记为“逻辑操作”,但是显示的操作都是按位排列的。通常,&&||被称为逻辑运算符,而&|被称为按位运算符。

他们介绍了表中的下列句子:

因此,操作被添加到编程语言和指令集体系结构中,以简化位元的打包和分解为文字。这些指令称为逻辑操作。图2.8显示了C、Java和RISC-V中的逻辑操作。

你认为为什么他们为&|编写逻辑运算符?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-30 17:06:20

在计算机体系结构术语中,对数字的操作是“算术”(例如add/sub/mul/div)。

位上的操作通常被称为“逻辑”或“逻辑指令”,就像在“布尔逻辑”中一样。(算术右移位,以符号位的副本形式移动,通常与其他移位一起分组,作为逻辑(也就是按位操作)。

例如,在维基百科的算术逻辑单元文章中,编写它的编辑器说操作码“指定了要由ALU执行的所需的算术或逻辑操作”。

阿格纳·福格对他的指令性能测试结果的指令表将整数指令分为移动/算术/逻辑(按位、移位、位测试、setcc) /控制传输/字符串(是的,x86很时髦)/其他(比如leavecpuid)。同样,FP算术和逻辑(是的,SIMD指令集为FP/SIMD寄存器提供按位的布尔指令)。

在C和Java的&&||意义上,CPU没有“逻辑”操作(即使对于整数输入,也不考虑短路逻辑),因此在计算机体系结构的上下文中,“逻辑”的含义与软件中的“逻辑”有不同的含义,在软件中,它们需要区分逻辑运算符的位运算和更复杂的操作。。

我想,计算机架构的使用时间更长了。

您的书并不是说C或Java中的&是“逻辑操作”,而是说and指令在计算机体系结构意义上执行“逻辑操作离子”。相应的C和Java运算符是位&运算符。

机器代码没有操作符,只有指令。(汇编语言对汇编时间常量进行操作,如andi x1, x2, (1<<4)-1作为编写andi x1, x2, 0x0f的替代方式。但这纯粹是汇编程序的一个特性,而不是ISA参考手册将要讨论的问题。)

我在googled上搜索computer architecture logical operations时,随机教程或指南中引用的用法

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

https://stackoverflow.com/questions/73544845

复制
相关文章

相似问题

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