[英]What is the difference between floating point instruction and floating point operation?
[英]What is the difference between "instruction" and "operation" terms?
Instruction
只是汇编语言的原子部分,例如
MOV EAX, EBX
现在假设我们有以下用 C++ 语言编写的代码:
int a = 1;
int b = a + 3;
这里=
和+
是operators
。
在数学中, operation
是 function 将零个或多个输入值(称为操作数)转换为明确定义的 output 值。
据我了解,我们不能在没有赋值的情况下执行operator
(基本上我们可以写b > c;
但它没有任何意义),甚至在内部进行递增和递减工作为x = x + 1
。
所以在我看来,在计算机科学中, operation
总是一些单一操作员执行的结果。 例如:
c = 1 + 2; // this is operation since we have single + operator
c = 1 + 2 + 3; // here we have two operations 1 + 2, and result of it + 3
现在。 并非每一行代码都可以翻译成一条指令,例如:
int a = 1; // MOV EAX, 1
int b = a + 3; // ADD EAX, 3
// ADD EBX, EAX
所以给operation
下面的定义是正确的(对于x86):
operation
是算子执行的结果。 它会转化为 1 个或多个指令。
我的理解是:指令是下层术语,用于告诉您在每个步骤中要做什么,涉及寄存器,memory 地址等。因此,我们用该语言编写的操作可以采用下层语言中的多条指令。
一个 function 可以有多个运算符。
一个操作可能需要多个指令来实现。
(或者有时,单个 asm 指令可以实现多个操作,例如 x86 lea eax, [ecx + edx*4 + 123]
实现x + (y<<2) + 123
)
大于符号也是一个运算符:它将 LHS 值与 RHS 值进行比较。 还有一元运算符:(++) (.) 等。
具有编译时常量操作数(如1+2+3
)的运算符可以在编译时计算为单个常量,无需使用 asm 指令。 (或者 1 mov
如果您不能稍后立即使用该常量)
并且操作符不需要是数学的:在 C++ 中, delete
和new
在 C++ 语法规则方面也是操作符。 但在 asm 中,它们被实现为 function 调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.