如何解决“指令”和“操作”术语有什么区别?
定义:
Instruction
只是汇编语言的原子部分,例如
MOV EAX,EBX
现在让我们说以下代码是用C ++语言编写的:
int a = 1;
int b = a + 3;
这里=
和+
是operators
。
在数学中,operation
是一个函数,它将零个或多个输入值(称为操作数)转换为定义良好的输出值。
据我所知,我们不能在没有分配的情况下执行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条或更多条指令。
解决方法
这是我的理解: 指令是低级术语,用于告诉您在每个步骤中要执行的操作,与寄存器,内存地址等有关。因此,我们用该语言编写的操作可以采用低级语言的多个指令。
一个函数可以有多个运算符。
一个操作可以采用多个指令来实现。
(或者有时,一个asm指令可以实现多个操作,例如x86 lea eax,[ecx + edx*4 + 123]
实现x + (y<<2) + 123
的实现)
大于符号也是一个运算符:它将LHS值与RHS值进行比较。还有一元运算符:(++)(!)等。
具有像1+2+3
这样的编译时常数操作数的运算符可以在编译时被评估为单个常数,而无需asm指令。 (或者1 mov
,如果以后不能再使用该常量作为立即数)
并且运算符不必是数学的:在C ++中,根据C ++语法规则,delete
和new
也是运算符。但是在asm中,它们被实现为函数调用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。