あと、

double a = 2.71828 * 3.141592;

というコードがあったとき、

コンパイラは、 2.71828 を丸めた2進浮動小数点数と 3.141592 を丸めた2進浮動小数点数を掛けよという機械語に翻訳するんですか?
それともこんな簡単な計算はコンパイラで予め行って、その結果を a に代入するという機械語を生成するんですか?