簡體   English   中英

“指令”和“操作”術語有什么區別?

[英]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++ 中, deletenew在 C++ 語法規則方面也是操作符。 但在 asm 中,它們被實現為 function 調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM