Fortran

アセンブリ解読:Fortran配列の中身

前回の続きです。 以下のコードを-O3でコンパイルすると、 pure function nth(v, n) result(out) implicit none integer, intent(in) :: v(:) integer, intent(in) :: n integer :: out out = v(n) return end function nth こんなアセンブリになって驚いた…

x64で配列の添字にintを使うと遅い

こういうツイートを見た。気になったので試してみたら本当にそうらしい。 x64でEAXに値を入れるとRAXの上位は(符号拡張ではなく)0になる。なのでC/C++で配列の添え字に32bit整数を使うと符号拡張命令が追加されて遅くなる。LP64環境で配列の添え字にintを使…

脳を破壊するFortranコード

今日、後輩と色々試していて面白いことに気付いた。Fortranのキーワードは、予約語ではない。Fortranはdoとかifとかといったキーワードを持っているが、これらは予約語ではない。 ググると規格書のセクション番号込で情報が出てくる。 Keywords in Fortran W…