Rubyのオブジェクトについて

前回は院試終わって,疲れきった中での更新でした.しかも夜中の更新でした. 文章読んでも,何書いてあるかわからなかった. とりあえず,今回の題材はrb_object なぜコレをピックアップするかというと,gc.cのオブジェクトを辿って行くとコレに着く(たしか…

RubyのGCについて

最近はGC周りのことについての知識欲求が強い. ちょこっとCRuby(MRI)の内部を触ったので覚え書き程度に書き残す. 何で検索にひっかかってるのかよく見ていないが,ちょこちょこアクセスがあったのが不思議に感じた(記事を書くキッカケ). ソースを触る環境…

現状把握(2)

現状把握のために書き記す. 最初のこのブログのモチベとして(1)グループ開発の知識, (2)LLVMのPASSの作成 この2つを主に考えていた.現状(2)は簡単なPASSではあるが, ノルマ的な意味では達成していると考えている.(1)は やはり, Git, GitHubの分散ファイル管…

PassのMakefile

とりあえずのMakefile #Makefile #OPTOBJS = $(wildcard ./*.ll) OPTOBJS = mem2.ll BASE = $(basename $(wildcard *.cpp)) OPTION = $(join -, $(BASE)) TARGET = $(join ./, $(BASE).so) CXX = g++ CXXFLAGS = -I/usr/local/llvm/include -std=c++11 `llvm…

Passを作った時のコマンドメモ(2)

つぎに任意のフォルダでつぎのhello.cppを作成する. #include "llvm/Pass.h" #include "llvm/IR/Function.h" #include "llvm/Support/raw_ostream.h" using namespace llvm; namespace { struct Hello : public FunctionPass { static char ID; Hello() : Fu…

Passを作った時のコマンドメモ(1)

いちおう完成したときのコマンドをめもりました. OS: Ubuntu 15.04 LLVM clang : 3.6.2 GCC version : 4.9.2まずは,LLVMのビルド方法から今回はウェブページから必要なファイル群をダウンロードします. LLVM Download Pageここから Clang source code LLVM s…

とりあえずの状況

環境 VisualBox上だが, Ubuntu 14.04 LLVM 3.6.2 (あんま調べていないたぶん最新版) gccとか必要なソフトウェア類は最新版にしている. この状況で Writing an LLVM Pass — LLVM 3.8 documentation のサンプルコードのPassをコンパイルした. #include "llvm/P…

LLVM for Grad Students 大学院生のためのLLVM を訳す8

Linking With a Runtime Libraryランタイムライブラリへのリンクあなたが明確でないなにかをする命令コードを必要とするとき, IRBuilderをつかってLLVM命令を使うことができる.その代わり, 実行時のC言語動作とプログラムをリンクする必要がある. この章では…

LLVM for Grad Students 大学院生のためのLLVM を訳す7

Now Make the Pass Do Something Mildly Interesting魔法は見つけるときに必要に応じて、コードを変更することとあなたがプログラムのパターンを探したときにあるでしょう。 簡単な例を示します. すべてのfunctionのは最初の二項演算子(+, -等)を乗算する…

LLVM for Grad Students 大学院生のためのLLVM を訳す6

Understanding LLVM IRLLVM IRへの理解を深める. LLVMでプログラムを動作させるには, IRがどのような構成なのか知っておく必要があるでしょう. Containers: 構成ここではLLVMプログラムにおいて重要なコンポーネントの外観を示します. モジュールはソースが…

LLVM for Grad Students 大学院生のためのLLVM を訳す5

Let’s Write a Pass 通常LLVMの研究は、パスを書くことを意味する. この章では, ビルドを通して簡単なプログラムを変換するパスを動作させる. A Skeleton私は無駄なLLVMのパスが含まれているテンプレートリポジトリsampsyo/llvm-pass-skeleton · GitHubフル…

LLVM for Grad Students 大学院生のためのLLVM を訳す4

Getting Oriented 改良してみよう!! Get LLVM まず, LLVMを入手する必要がある. LinuxのディストリビューションはしばしばLLVMとClangのパッケージを提供する. しかし, 改良のためのすべてのヘッダが含まれたベージョンを確実に手に入れる必要がある. 例えば…

LLVM for Grad Students 大学院生のためのLLVM を訳す3

The Pieces ここではLLVMのアーキテクチャの主要なコンポーネント図を示します(現代の他のコンパイラの構造でもある). フロントエンド: ソースコードを取得し、中間表現(IR)に変換する. この変換は、C++ソースコードの複雑さに完全に対処する必要はなく, 残…

LLVM for Grad Students 大学院生のためのLLVM を訳す2

Why Would a Grad Student Care About LLVM? なぜ大学院生はLLVMについて議論しないのか LLVMはよいコンパイラであるが, もしあなたがコンパイラの研究をしなかったら誰がやってるのであろうか. あなたがいろいろなことをするプログラムが必要なとき、コンパ…

LLVM for Grad Students 大学院生のためのLLVM を訳す1

ツイッターをチラチラみてたらLLVMのハッシュタグあることに気づいた(調べた 笑). そのなかで Adrian Sampson: LLVM for Grad Students というリンクが気になったので訳しみた. いつもと同様にGoogle翻訳先生に英文投げて日本語を拾い上げる方式. そのため日…

optコマンドについて

opt - LLVM optimizer | http://llvm.org/docs/CommandGuide/opt.html (閲覧日:2015/08/09) 簡単な訳(あってるかは保証しない.) DESCRIPTION optコマンドは、モジュール式LLVM最適化および解析器である。optはLLVMソースファイルを入力として受け取り, 指…

-Iオプションについて

忘備録としてつけているのに説明なしとはこれいかに Ubuntu Manpage: clang - the Clang C and Objective-C compiler で解説されているが- Iオプションについて -Idirectory Add the specified directory to the search path for include files. とかかれて…

LLVMについて

LLVMの知識については Overview — LLVM 3.8 documentation きつねさんでもわかるLLVM を参考にやっている. 英語力はないのでGoogle先生頼りながら, 必要な情報を集める方針. 狐本の方は, 内容はとてもわかり易いと思う. でも, 実際は確認程度かなと思い始め…

はじめる理由てきな

理由: グループでの開発作業に必要な知識が足りていない. LLVMでPassの作成をやりたいが, 上手くいかない. なんとなく他の人の忘備録とかみて作業をやってきたから, 自分もやってみようと思った. こんなかんじが今のモチベーションである. 完全に自分語り用…