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

如您所见,左边的列被标记为“逻辑操作”,但是显示的操作都是按位排列的。通常,&&和||被称为逻辑运算符,而&和|被称为按位运算符。
他们介绍了表中的下列句子:
因此,操作被添加到编程语言和指令集体系结构中,以简化位元的打包和分解为文字。这些指令称为逻辑操作。图2.8显示了C、Java和RISC-V中的逻辑操作。
你认为为什么他们为&和|编写逻辑运算符?
发布于 2022-08-30 17:06:20
在计算机体系结构术语中,对数字的操作是“算术”(例如add/sub/mul/div)。
位上的操作通常被称为“逻辑”或“逻辑指令”,就像在“布尔逻辑”中一样。(算术右移位,以符号位的副本形式移动,通常与其他移位一起分组,作为逻辑(也就是按位操作)。
例如,在维基百科的算术逻辑单元文章中,编写它的编辑器说操作码“指定了要由ALU执行的所需的算术或逻辑操作”。
阿格纳·福格对他的指令性能测试结果的指令表将整数指令分为移动/算术/逻辑(按位、移位、位测试、setcc) /控制传输/字符串(是的,x86很时髦)/其他(比如leave和cpuid)。同样,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时,随机教程或指南中引用的用法
https://stackoverflow.com/questions/73544845
复制相似问题