![](/img/trans.png)
[英]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.