LLVMインストール方法

  • LLVM を、最新の source repository から git clone http://llvm.org/docs/GettingStarted.html#git-mirror を参考にgitからclone。
     $ git clone http://llvm.org/git/llvm.git
     $ cd llvm
     $ mkdir build && cd build
     $ (インストール場所)/configure --prefix=$PWD --disable-optimized --enable-debug-runtime\
     $ --enable-debug-symbols --enable-assertions 
     $ make -j2 (jは並列、失敗したらmakeで)

brewでのインストール方法(読み会用mini版)

  • brewが入っていなければbrewをインストール。
     $ brew install ie-developers/ie/llvm_original`

hello.cを作成

 $ vim hello.c
  • ソースコード1
    int main (){
     puts ("Hello , World");
     return 0;
    }
  • ソースコード2
    int main(int ac , char *av[]){
      return 55+ac;
    }

lldbを起動

 $ lldb -- (インストールした場所)/Debug+Asserts/bin/clang -cc1 -S hello.c

ldbの利用方法

  • ブレイクポイントを指定
    (lldb) b (行数、または関数名や変数名など)
  • 実行
    (lldb) r
  • 行を表示
    (lldb) l
  • 関数に入る、関数がなければ次の処理へ
    (lldb) s
  • 次のブレイクポイントまで移動
    (lldb) c
  • 次の行へ(関数があっても無視される)
    (lldb) n
  • step時にupするとstepする前に戻れる
    (lldb) up
  • upの逆
    (lldb) down
  • どこの階層に来ているのかを確認
    (lldb) bt
  • 変数の中身を表示
    (lldb) p
  • 関数の終了
    (lldb) fin
  • lldbの終了
    (lldb) q

1.はじめにconsumetokenにブレイクポイントを置く(文字の切れ目を探す) cosumetokenで解析する

 (lldb) b ConsumeToken

FormTokenWithChars?(Token &Result, const char *TokEnd?,

12/11-----------------------

2日目

  • Parser.h
    CodeGenAction→コード生成.IRか通常のファイルかで変わる
  • ConsumeToken?
    isTokenSpecial→文字なのか,記号なのかどうか
    intとかキーワードを判断
    TokのKindにキーワードの種類が入っている
  • Lexer
    字句解析.
       1文字づつ読んでいく.
    FormTokenWithChars
       Tokenの長さ,場所,種類をLex(のResult)に格納しておく
  • ParserFunctionDeclarator?
    Declaratorは宣言?
  • PaserExpression?
    +などの計算式が現れたら計算の優先順位に合わせて計算する
    Precが優先順位を表す
       PaeseCastExpression
ActOnIdExpression
   変数の意味(中身)を調べる
  • PaseCastExpression?
    cast-expression, unary-expression, postfix-expression, primary-expressionを操作する
    それぞれの種類に応じて処理を変える
    IIにIdentifier Infoがある
  • Validator
  • ActOnIdExpression?
    LookUpResult
      変数が何かを調べる.何度も最適化が行われている.
          SemaLookUp
  • ActOnNumericConstant?
  • getLanOpts?
  • ActOnIdExpression?

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-02-22 (月) 14:28:06 (608d)