それで、私は Hack CPU エミュレーターを作成していますが、出力を計算する最良の方法は何かと考えていました。一度に 1 ステップずつ結果を計算するよりも、出力計算を判読できない 1 行にまとめる方が効率的でしょうか? コンパイラは、両方のオプションが問題ないように最適化しますか? 基本的に、これらのうちどれがより効率的か -
これ:
word HackALU(word x, word y, bool zx, bool nx, bool zy, bool ny, bool f, bool no) { x = zx ? 0 : ×; y=zy?0 : はい; x = nx ? ~x : x; y = ny ? ~y:y; 単語の結果 = f ? x + y : x & y; いいえを返しますか?〜結果:結果; }
またはこれ:
word HackALU(word x, word y, bool zx, bool nx, bool zy, bool ny, bool f, bool no) { いいえを返しますか?~(f ? ((nx ? ~(zx ? 0 : x) : (zx ? 0 : x)) + (ny ? ~(zy ? 0 : y) : (zy ? 0 : y))) : (( nx ? ~(zx ? 0 : x) : (zx ? 0 : x)) & (ny ? ~(zy ? 0 : y) : (zy ? 0 : y)))) : (f ? ((nx ? ~(zx ? 0 : x) : (zx ? 0 : x)) + (ny ? ~(zy ? 0 : y) : (zy ? 0 : y))) : ((nx ? ~(zx ? 0 : x) : (zx ? 0 : x)) & (ny ? ~(zy ? 0 : y) : (zy ? 0 : y)))); }