タグ

llvmに関するhts1004のブックマーク (16)

  • Go言語で利用するLLVM入門 | POSTD

    はじめに LLVMは、コンパイラを作成するための基盤です。2000年にChris Lattnerによって作成され、2003年にリリースされました。それ以来、LLVMリンカ lld やLLVMデバッガ lldb など幅広いツール群を持つ包括的なプロジェクトに発展してきました。 LLVMの秀でた特徴は、一般に LLVM IR と呼ばれる、その中間表現です。LLVMの考え方は、まずこのIRにコンパイルし、次にそのIRを、JITコンパイルする、インタープリタで実行する、または実行しているマシンのネイティブアセンブリにコンパイルするといういうものです。このIRの主なターゲットは、コンパイラです。実際LLVMを使用するコンパイラは、世の中に数多くあります。C言語とC++用はそれぞれclangとclang++、D言語用の ldc2 、RustSwiftなどです。 Emscripten のようなプロジェ

    Go言語で利用するLLVM入門 | POSTD
  • 大学院生のためのLLVM | POSTD

    (注:2017/07/06、いただいたフィードバックを元に翻訳を修正いたしました。) この記事は、 LLVM コンパイラ基盤を使ってリサーチをする人のための入門書です。これを読めば、コンパイラに全く興味のない大学院生も、楽しみながらLLVMを使って優れた功績をあげられるようになるでしょう。 LLVMとは何か? LLVMは非常に優れていて、ハックしやすく、C言語やC++のような”ネイティブ”言語向けの、時代の先端を行くコンパイラです。 LLVMの素晴らしさに関しては他にも様々な話を聞くのではないでしょうか(JITコンパイラとしても使えるとか、C言語系列以外の様々な言語を強化できるとか、 App Storeからの新しい配信形態 であるとか、などなど)。もちろん全部当のことですが、今回の記事の目的としては、上述の定義が重要です。 LLVMが他のコンパイラと差別化される理由には、いくつかの大きな

  • llilcについて - ものがたり

    Microsoftがcoreclrまわりの新しいネタを投入してきましたね。LLVMを.NET Coreで使うものだそうです。 github.com "an LLVM based compiler for .NET Core." 何だかよくわからないですね。 llilcは、.NETで言えばランタイムの一部分の一種であり、99%の.NET開発者には意識する必要のないプロジェクトです。 .NETランタイムには、MSILを解釈して、実行マシン上のCPUネイティブコードに変換して実行する機能が求められます。いわゆるJITコンパイラーというやつです。LLVM based "compiler"というのは、このJITコンパイラーのことです(RoslynみたいなC#コンパイラーとは、取り扱っている問題が違います)。 オープンソースで公開されているcoreclrには、現在、RyuJITというJITコンパイラー

    llilcについて - ものがたり
  • ARM 64bit でLLVMは見逃せない - 組み込みの人。

    iPhone5S, iPad Airで64bit ARMプロセッサをいち早く製品化したAppleですが、驚きのニュースがありました。 AppleはOS X, iOSのコンパイラツールチェインをgccからclang/LLVMに移行しています。その64bit ARM向けのバックエンドをLLVMのコミュニティに公開し、それを家のツリーのメインラインに統合するという話です。 ニュースの概要は以下の記事で読むことができます。 Apple Open-Sources Their 64-bit ARM LLVM Back-End - Phoronix その続報。 Apple, LLVM Developers Figure Out Their 64-Bit ARM Approach - Phoronix 一次ソースを自分でも確認しました。ことの始まりはLLVMdevのメーリングリストのこの投稿。 http

    ARM 64bit でLLVMは見逃せない - 組み込みの人。
  • KitKatで実装されているARTがいずれDalvikVMに置き換わってAndroidの世界を変える(やや改変)

    携帯関連の将来や最新の技術情報や業界の行く末などを適当に綴るblogです。 内容の信憑性は?余り信じない方がいいと思います。 家の鈴の音情報局はこちら→http://suzunone.0g0.jp:8800/ スマホ・携帯端末アクセス[ランキング]/[アクセスシェア(グラフ)] (毎年10/1にログをクリア) ・Android 4.4に入ったARTのソースを見た感想 ~ 組み込みの人。 ・Android 4.4 のARTのブートログを見てみた ~ 組み込みの人。 ・Android 4.4 Kitkatで新しいランタイムARTと従来のDalvikの動作を比較した動画 ~ Dream Seed Android 4.4 Kitkatでは内部的に大きく変わる所が有る。 AndroidはDalvik VMがAndroid OSの実行を含め、Androidの全てを牛耳っている。 しかしそこにARTと

  • LLVMによるプログラミング言語の実装 – 日曜研究室

    最近の投稿 問題: 積み木を10個積み上げるのにかかる時間は 2020/8/20 木曜日 Google の G Suit Team から “[Action Required] Remove internal links to the G Suite Domain Contact page for your organization” ていうメールが来た 2020/8/14 金曜日 NZXT H1 と ROG STRIX B550-I GAMING で組んでみた 2020/7/17 金曜日 花粉症対策2019 2019/3/16 土曜日 マルチディスプレイ時のDisplayPort問題を何とかしてみた 2019/1/12 土曜日 REALFORCEソフトウェアがインストールできない(解決済) 2018/12/6 木曜日 GeForce RTX 2080 Founders Edition を買

  • Objective-C勉強会@東京 で iOSのユニットテストについて話してきた

    Objective-C勉強会@東京 – PARTAKE に参加して、iOSのユニットテストについて話をして来ました。 iOS Unit Test スライドは上記に置いてあります。 そこまで、それぞれに詳しく扱ってない感じで、ロジックテストとアプリケーションテストの違いや、 どういうツールがあるのかやデータベースを使った時にテストの仕方等の紹介な感じです。 xctool はiOSのテストをCLIで実行するのにとても便利でよい感じなのでお勧めです。 スライド内にひっそり(note)とCocoaPodsと xctool の相性がまだ良くないことが書かれていますが、 一度ビルドしないと、 xctool からテストを動かすとエラーになる現象があります。 これは、”Find Implicit Dependencies”の挙動が上手く動いていないのが原因みたいで、手動でビルドの設定にCococPodsの

    Objective-C勉強会@東京 で iOSのユニットテストについて話してきた
  • x86/x64最適化勉強会5 レポート - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちはサイボウズ・ラボの光成です。 今回は3月30日に開催された「x86/x64最適化勉強会5」の模様についてお伝えします。 x86/x64最適化勉強会会場 プログラム開発においては、開発の段階において早すぎる最適化は悪、当に必要になってから最小限だけ行いなさいと言われています。 また今どきのコンパイラは優秀なので、下手な小細工はせずにコンパイラに任せておくのがよいとも言われています。 もちろん一般的にはそれは正しいのですが、普段動画や音声を利用するときに使われているコーデック、ネット上での決済時に利用される暗号ライブラリなどは、人の手によるアセンブリ言語で開発されていることが多いのもまた事実です。 私が主催しているこの勉強会はそういう下回りのライブラリを開発するときに必要な技術や情報の交換のために行っています。 ustreamで過去の会の動画も含めてみることができます。 以下、やや

    x86/x64最適化勉強会5 レポート - Cybozu Inside Out | サイボウズエンジニアのブログ
  • LLVM(ruby-llvm)とPEG(Treetop)で電卓作り - I am Cruby!

    きつねさんのを読んだので、LLVMを使ってお約束の電卓をゴソゴソと作ってみました。 authorNari/ttcalvm ? GitHub こんな感じで動きます。 $ cat /tmp/a.txt 1 + 2 + 3 * 2 * (3 + 2) % 6 $ ./bin/ttcalvm /tmp/a.txt 3 あ〜、これ、電卓だ〜。 LLVMとの連携にはruby-llvmを利用。 パースにはPEGを使ってみたかったので、Treetopを利用しました。 PEGの文法などについてはkmizushimaさんの記事がすごくわかりやすいです。 PEG基礎文法最速マスター - ((プログラミング | 形式) 言語) について書く日記 LLVMとruby-llvmのインストール方法(Ubuntu 12.04)llvm-3.0を入れる。llvm-devまでいるのかは不明。 $ sudo aptitude

  • LLVMで作る日本語プログラミング言語 - ずっと君のターン

    https://github.com/technohippy/Kaleidoscope.ja 以前から日語プログラミング言語って作ってみたくて、でもただのトランスレーターならともかく、まっとうにコンパイル出来てネイティブでサクサク動くようなのはどうやって作ったらいいか分からないどころか、どの辺から勉強に手をつければいいのかすら分からなくて放置してたわけです。 ところがまぁ世の中良くしたもので、LLVMというものを使えばフロントエンドを作るだけで、ややこしいところは良しなに処理してくれるそうじゃないですか。しかも最近が出たばかり。これが日語の予約語とか関数名・変数名とかを扱えるなら、いろいろ捗りそう。ということで試してみました。 結論から言えば、タイトルのとおり、LLVMは日語も問題なく使えるみたいです。 サンプル: カレイドスコープ ということで、さっそく実際に動くものを作ります。

    LLVMで作る日本語プログラミング言語 - ずっと君のターン
  • llvmの基本となるツールたち 〜llvm 入門 その1〜 - tokuhirom's blog

    3つのツールをためすhelloworld.c はこちら。 #include <stdio.h> int main( ) { printf("Hello World!\n"); }llvmアセンブリを生成! $ llvm-gcc -S -emit-llvm helloworld.c helloworld.s ができてた。 ; ModuleID = 'helloworld.c' target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64" target triple = "x86_64-apple-darwin11.4" @.str

  • Charming Python: Functional programming in Python, Part 3

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    Charming Python: Functional programming in Python, Part 3
  • NDKの後継開発キット-GDK - Happy My Life

    Android Advent Calendar 2012 12月11日(表)のエントリーです。裏は、@currycatgtiさんです。おいらのエントリーでネタを期待している人はいないでしょうから技術話で。 ここではAndroid NDKの後継開発ツールとして開発が進められているらしいGDK(もちろん未発表)について、推測も交えていろいろ話していこうかと。まあ、正式な発表があったわけでもなく、推測も織り交ぜて書いてあるので、話半分で読むのが丁度良いかなと。 Android4.1で出現したGDKフォルダ 事の発端は、AOSP(Androidの公開されているソースコード)のAndorid4.1から追加されたGDKフォルダを調査したことから。AOSPに含まれている「なんとかDK」フォルダはAOSPにいくつかあるが、これらフォルダはすべて開発キットが格納されている。AOSPのトップにあるフォルダは、

    NDKの後継開発キット-GDK - Happy My Life
  • Charming Python: Functional programming in Python, Part 3

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    Charming Python: Functional programming in Python, Part 3
  • Xcode 4 でデフォルトになった LLVM って何?

    こんにちは。開発担当の金内です。 Xcode 4 は UI もすっかり変わりましたが、ビルドの要であるコンパイラもデフォルトが変更されています。その新しいコンパイラのキーワードが「LLVM」です。いまいち聞き慣れない方もいると思うので、今回はその LLVM について簡単にご紹介します。 ざっくりとした結論から言ってしまえば、Xcode における LLVM は従来のデフォルトコンパイラである GCC を置き換えるものです。LLVM には次のような特徴があります。 ・コンパイルが速い ・コンパイルされたコードが速い ・エラーメッセージがわかりやすい ・他のツールと連携しやすい いいことばかりですね。 しかし、コンパイラは要となる重要なコンポーネントなので、互換性などへの配慮から、Apple は GCC からの移行を少しずつ段階的に進めています。 実際、Xcode 4.0 でのデフォルトは完全に

    Xcode 4 でデフォルトになった LLVM って何?
  • 1