MIPS ABI 再びまとめ

Support Home Page
重要な所だけ一部抜粋。

     -----------------------------------------------------------------
     Category                 O32           n64           n32
     -----------------------------------------------------------------
     Command Line Switch      -32           -64           -n32
     Supported ISA            mips1,2       mips 3,4      mips 3,4
     Default ISA              mips2         mips4         mips3
     Object file format       ELF32         ELF64         ELF32
     Debug info format        mdebug        DWARF         DWARF
     Symbol table format      ELF32         ELF64         ELF32
     Number of double         16            32            32
     precision floating
     point registers
     bits in int              32            32            32
     bits in long             32            64            32
     bits in char *           32            64            32
     -----------------------------------------------------------------

加えて書くとすれば、O64はO32を64bitセーフにしたようなもので、Command Line Switchは-o64になる。
整数・浮動小数点のビット幅は同じでコーリングコンベンションも同じだが、long longの操作は32bit op * 2ではなく64bit op * 1にコンパイルされる。
スタックへレジスタを退避する時、或いは引数を積むときも64bit幅で積む。
その辺りはn32とほぼ同じ訳だが、n32はコーリングコンベンションがn64と同じになってる。

あとは、O32/N32/O64 = ILP32, N64 = LP64という辺りも重要かな。