私はコンパイラに関する質問、具体的な動作について質問します。私はコンパイラが構文的に異なって記述されているコードに対して同じマシンコードを常にコンパイルすると思いますが、同じことをします。これは本当ですか?構文上の違いにかかわらず、機能的に似たコードが同じ結果にコンパイルされますか?効率的なコンパイラは毎回まったく同じ結果をコンパイルしますか?
int number = 2;
は同じものにコンパイルします:例えば
と同じになり
int number;
number = 2;
またはその
while True:
(私はここでのpythonを使用しています例として):
while 1:
私は特に.netコンパイラとインタプリタに興味があります。 JITコンパイラは毎回同じことを「時間内に」コンパイルしますか? Pythonインタプリタのような通訳は、毎回同じコードコードを正確に「解釈」しますか?
ありがとうございました!
どのように2つのループは同じですか? –
「同じことをしていますか?最後の2つのループは、ループ中にiの値が5回ずつループしていても、実際には異なる処理を行います。 – templatetypedef
'for(int i = 0; i <5; i ++)'は特定の状況下で 'for(int i = 1; i <= 5; i ++)と同じオブジェクトコードにコンパイルされる可能性があります。あなたが* '*' '〜' '私がそれ以来望んでいない一般的な場合は、異なる値の範囲を持ちます。 'i'がループ内で使用される場合、その違いは重要です。 –