アルパカ三銃士

〜アルパカに酔いしれる獣たちへ捧げる〜

フィボナッチ数列の LLVM IR を読む

LLVM IR を読んでみた。
以下のような記事を見つけたため、今後のためにメモを残すことにした。

takoeight0821.hatenablog.jp

今回読むのは次のフィボナッチのコードである。

int fib(int n) {
  int i, t, a = 0, b = 1;
  for (i = 0; i < n; i++) {
    t = a + b; a = b; b = t;
  }
  return b;
}
続きを読む

Perl で Compiler::CodeGenerator::LLVM を用いて LLVM IR を出力する

約 4 年前になると思うが、@goccy54 さんが LLVM のライブラリを用いて、Perl のコードから LLVM IR を生成するといった夢のようなモジュールを作成されていた。

それが Compiler::CodeGenerator::LLVM である。

これをどのような感じで使うのかは、@papix さんによって以下のリンクで解説されている。

Compiler::CodeGenerator::LLVMで遊ぼう! | Hachioji.pm 日めくりテックトーク

上の記事が Publish されてから 1 年後に僕は Perl をやり始めて、Perl に関する情報を仕入れる中でこの記事に出会い、こういうことをやってみたいなーと強く憧れていたのを今でも覚えている...

それは置いといて、約 4 年間更新が止まった Compiler::CodeGenerator::LLVMLLVM 5.0.1 に対応させることができたため記録を取る。
なお、当時は LLVM 3.2 を用いていた。

続きを読む

ポインタで vector を作ってはいけないかもしれない

この issue を解決しようとしてデバッグしまくってた結果疑問が出てきた。

github.com

それは STLvector でポインタを使ってはいけない疑惑。

続きを読む

Perl XS デバッグを vscode で行う

タイトルの通り、vscode を使って XS のデバッグを行う。
環境は Mac OS X El capitan MacBook Air (11-inch, Mid 2012) で lldb を用いる。Perl は 5.24.1 で plenv を使って管理している。

まずはデバッグしたいプロジェクトを vscode で開き、launch.json を以下のように編集しなければならない。

続きを読む

.gitattribute を使って GitHub 上の diff で自動生成したファイルを表示しない方法

お世話になってる皆さんへ
あけましておめでとうございます。
今年も一年よろしくお願いいたします🙇

さて、新年早々 Pull Request を提出したわけだが、テストの自動生成でファイル量がかなり多くなってしまい、レビューに必要もないファイルまで diff に表示されて困っていた。

そこで .gitattributes を次の行を追加することで回避することに成功した。

続きを読む