FreePascal

FreePascalその6

ある結果が返るまで同じ関数を呼び続けるとき一緒に行うべき処理が何も無いなら while not X do ; {セミコロンの直前に空文}よりも repeat until X; {repeatとuntilの間に空文}のほうがカッコイイことに気付いた。 いやだからなんだって話ですが。 なおFreeP…

FreePascalその5

FreePascalで他コンパイラからリンクするためのライブラリを書くメモ。 System含めて外部ユニットで定義された型を使うときはtype T = type U.T;とするとRTTIをインポートして来ずにその場で生成されるので完結できるし.sからの削除も楽。 malloc等静的リン…

FreePascalその4

…最適化あまり賢くないな…これ。 gcc系がレジスタの使い方が下手なのは無論として、register*1呼び出し規約の肝は、スタックフレームレスのコード生成だと勝手に思っているのですが、FreePascalのregister呼び出し規約は、しっかりスタックフレーム作りやが…

FreePascalその3

そんなこんなでdyayamlをpure-Pascal化して特に問題なくdmdとかとリンクできる状態まで持ってきました。小手調べのつもりで二日もかかった…。 そして…また嫌なことに気付いてしまいました。 それは、RUN TIME TYPE INFORMATION。使いもしない余計な情報がオ…

さらにFreePascalは素晴らしい

FreeBSD用の.tarからunits/i386-freebsdだけ持ってきて、-Tfreebsdを付けることで、なんとクロスコンパイラを作らなくてもbin/i386-win32/fpc.exe(ppc386.exe)でもってFreeBSD用のオブジェクトファイルを吐かせることができます! リンクだけMinGWのi386-pc-…

FreePascalは素晴らしい

http://community.freepascal.org:10000/docs-html/user/usersu14.html なんて出力形式豊富なんだ。 で、Windows上で試せるだけ試しました。 http://panathenaia.halfmoon.jp/alang/sample-fpcmix.7z 結果、COFF系*1、OMF系*2、gcc系*3全部リンクに成功。 更…