KDOC 520: Goコンパイラは定数除算を乗算に変換する
この文書のステータス
- 作成
- <署名>
- レビュー
- <署名>
概要
変数で除算する場合と、定数で除算する場合のアセンブリを比較する。
- 変数で除算するコードでは除算命令
IDIVQを使っている - 定数で除算するコードでは除算命令は登場せず乗算命令
IMULQを使っている
また、変数で除算する場合はゼロ除算時のチェック CALL runtime.panicdivide(SB) が入っていたりする。
関連
- 動機(追加調査): KDOC 508: 除算の実行速度を計測する。調べているとき、変数か定数かで速度に違いがあることから命令に違いがありそうなことに気づいた