Imagination Technologies が MIPS用のGCCを配布しているので、早速ダウンロードしてみた。
MIPS Compilers | Imagination Community
Ubuntuの上で展開すると、mips-mti-elf-xxxの形式でバイナリとライブラリが用意されていた。
mips-mti-elf-gcc の --help=target をしてみると、なんとRelease6がサポートされている!
$ mips-mti-elf-gcc --help=target ... Known MIPS ISA levels (for use with the -mips option): 1 2 3 32 32r2 32r3 32r5 32r6 4 64 64r2 64r3 64r5 64r6
早速Release-6でCoremarkをコンパイルしようとしてみたが、memsetが無いと言われてリンクができない。これは経験上-O2オプションにすることで回避できるのだが、こんどはリンクするライブラリとバイナリ互換性が合わないようだ。。。
※ 上記のmemsetの問題は、-fno-tree-loop-distribute-patterns オプションを用いると解決できるようだ。 (15/02/22)
うーん、とりあえず、暫くは単体でコンパイルするしかなさそうな感じがしている。
※ おまけ。あ、、、れ、、、 MIPSr6の命令が出てほしいのだけれど...
$ cat loop.c int count (int n) { int i, ret = 0; for (i = 0; i < n; i++) { ret += i; } return ret; } $ mips-mti-elf-gcc -mips32r6 -mabi=32 -O3 -c loop.c $ mips-mti-elf-objdump -d loop.o loop.o: file format elf32-tradbigmips Disassembly of section .text: 00000000: 0: 1880ffff blez a0,0 4: 00001021 move v0,zero 8: 00001821 move v1,zero c: 00431021 addu v0,v0,v1 00000010 <.L7>: 10: 24630001 addiu v1,v1,1 14: 1464ffff bne v1,a0,14 <.L7+0x4> 18: 00431021 addu v0,v0,v1 1c: 03e00009 jr ra 20: 00431023 subu v0,v0,v1 00000024 <.L8>: 24: 03e00009 jr ra 28: 00000000 nop