main=65011720;なんだよ

main=195;とか楽しそうだなーと思ってたので、じゃあMIPSだとどうなるの?って思ったのでやってみた。


※main=195が分からない奴はこっちを嫁:
mainとは何なのか(1) - バリケンのRuby日記 - Rubyist
mainとは何なのか(2) - バリケンのRuby日記 - Rubyist
mainとは何なのか(3) - バリケンのRuby日記 - Rubyist


MIPSでreturnする時は

jr ra

という命令を実行する。

これはmipsel(MIPSのlittle endian)だと0x03e00008になる。
これを更にintに直して10進表記すると65011720になる。

ってことは、

main=65011720;

ってしてあげれば良い訳ね。
で、念の為逆アセンブルしてみると、

セクション .data の逆アセンブル:

00440970 <__data_start>:
        ...

00440980 <__dso_handle>:
        ...

00440990 <p.2354>:
  440990:       00440960        0x440960
        ...

004409a0 <main>:
  4409a0:       03e00008        jr      ra
  4409a4:       00000000        nop

となっているので正しそう。

qemu-mipsel -L /usr/mipsel-linux-gnu/ ./main

qemuユーザランドエミュレータで走らせてみても、問題なく動作してるらしい。