タグ

llvmに関するemonkakのブックマーク (18)

  • The Rust Calling Convention We Deserve · mcyoung

    I will often say that the so-called “C ABI” is a very bad one, and a relatively unimaginative one when it comes to passing complicated types effectively. A lot of people ask me “ok, what would you use instead”, and I just point them to the Go register ABI, but it seems most people have trouble filling in the gaps of what I mean. This article explains what I mean in detail. I have discussed calling

    The Rust Calling Convention We Deserve · mcyoung
  • GitHub - root-project/cling: The cling C++ interpreter

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - root-project/cling: The cling C++ interpreter
  • LLVM の Kaleidoscope を育てながら作る - Qiita

    この記事は言語実装 Advent Calendar 2020 3日目の記事です。前回は sisshiki1969 さんの「ruruby: RustでつくっているRuby」、次回は yharaさんの「Shiika進捗」です。 趣旨 LLVM を使って小さな言語を実装してみます。 方針としては、最小限の機能の言語から出発して動くものを少しづつ大きくしていきます。ゴールは LLVM 公式のチュートリアルである Kaleidoscope の序盤相当の部分で、次のプログラムが動くことを目標とします。 想定する読者 LLVM や LLVM IR がどういうものか何となく知っている Haskell がなんとなく分かる ただしコードにはコメントを入れて、LLVM IR や Haskell に慣れていない方でも意味がつかめるようにしたいと思います。 環境 LLVM 9.0 stack 2.5.1 ubunt

    LLVM の Kaleidoscope を育てながら作る - Qiita
  • Google Propellerが大規模LLVMバイナリからさらなるパフォーマンスを引き出す

    あなたにとって重要なトピックや同僚の最新情報を入手しましょう最新の洞察とトレンドに関する最新情報を即座に受け取りましょう。 継続的な学習のために、無料のリソースに手軽にアクセスしましょうミニブック、トランスクリプト付き動画、およびトレーニング教材。 記事を保存して、いつでも読むことができます記事をブックマークして、準備ができたらいつでも読めます。

    Google Propellerが大規模LLVMバイナリからさらなるパフォーマンスを引き出す
  • LLVM、定数として宣言されたメモリ領域への代入を削除する最適化を導入 | スラド デベロッパー

    LLVM 9.0では、定数として宣言されたメモリ領域への代入については「実行されないコード」と判定して削除するような振る舞いになったという(リリースノート、@shafikyaghmour氏のTweet、@shyouhei氏のTweet)。 これは、たとえばC/C++で「const」キーワード付きで宣言された変数をキャストを使って非constなものとして扱った際などに発生しうる。この結果、LLVMでコンパイルした際に今まで発生していなかった不具合が生じる可能性があるようだ。

    emonkak
    emonkak 2019/09/29
  • GitHub - rhysd/gocaml: :camel: Statically typed functional programming language implementation with Go and LLVM

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - rhysd/gocaml: :camel: Statically typed functional programming language implementation with Go and LLVM
  • LLVM IR の alloca 命令のつかいかた - はやくプログラムになりたい

    LLVM IR の alloca 命令の使い方について,リファレンスマニュアルに載ってない注意点があったのでメモがてら書きます. alloca 命令とは スタック上にメモリを確保し,確保した領域の先頭へのポインタを返します.スタック上にメモリを割り付けることでアドレスが必要なメモリ領域を得ることができ,自動変数などの実装に使うことができます. http://llvm.org/docs/LangRef.html#alloca-instruction %ptr = alloca i32 ; yields i32*:ptr %ptr = alloca i32, i32 4 ; yields i32*:ptr %ptr = alloca i32, i32 4, align 1024 ; yields i32*:ptr %ptr = alloca i32, align 1024 ; yields i

    LLVM IR の alloca 命令のつかいかた - はやくプログラムになりたい
    emonkak
    emonkak 2017/03/15
  • LLVMを始めよう! 〜 LLVM IRの基礎はclangが教えてくれた・Brainf**kコンパイラを作ってみよう 〜 - プログラムモグモグ

    コンパイラを作ってみたいと思っていても、アセンブリ言語はよくわからない。 パーサーみたいなコードは書いたことがあるけれど、コード生成の処理はさっぱりだ。 実行ファイルをバイナリエディターで見るとかなにそれ怖い。 そんな私なのですが、LLVMに興味を持ち始めています。 SwiftRust、あるいはEmscriptenなど、近年注目されている言語やコンパイラ技術の中枢にはLLVMがあります。 アセンブリはよく分からなくてもLLVMを使いこなせるようになれば、マルチプラットフォームで実行ファイルを生成できる言語処理系を作るのではないか。 コンパイラ作ってみたいな、LLVMを使ってみようかなと思っている今日このごろです。 ところが、いざLLVMを勉強しようと思ってもどこから始めればいいかよく分かりませんでした。 マニュアルは巨大で読む気が起きないし、リファレンスを見てもさっぱりです。 雰囲気はわ

    LLVMを始めよう! 〜 LLVM IRの基礎はclangが教えてくれた・Brainf**kコンパイラを作ってみよう 〜 - プログラムモグモグ
    emonkak
    emonkak 2017/03/05
  • MITが並列プログラムの最適化改善のためにLLVMのIRを拡張

    あなたにとって重要なトピックや同僚の最新情報を入手しましょう最新の洞察とトレンドに関する最新情報を即座に受け取りましょう。 継続的な学習のために、無料のリソースに手軽にアクセスしましょうミニブック、トランスクリプト付き動画、およびトレーニング教材。 記事を保存して、いつでも読むことができます記事をブックマークして、準備ができたらいつでも読めます。

    MITが並列プログラムの最適化改善のためにLLVMのIRを拡張
  • オブジェクト指向言語をLLVM IRにコンパイルするには - yhara.jp

    昨年から、Esquisという言語を作っている。Rubyっぽい文法の静的型付け言語になる予定で、実行はLLVM IRを経由して行う。 ということで、(クラスベースの)オブジェクト指向言語をLLVM IRで表現する方法について考えていたので、分かったことをまとめておく。既存の実装としては主にCrystalの生成するLLVM IRを参考にした。 オブジェクトをstructに対応させる LLVMにはstruct型というものがあり、オブジェクトはこれで表現することができる。問題はどのようなstruct型を定義するかだ。 最初に考えたのは、EsObjという型を作って、すべてのオブジェクトを表現するという方法だ。 だがすぐに、この方法では上手くいかない点が見つかった。オブジェクトはインスタンス変数の値を保持する必要があるが、オブジェクトがどのようなインスタンス変数を持つかは属するクラスによって異なるので

    emonkak
    emonkak 2017/02/13
  • 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が他のコンパイラと差別化される理由には、いくつかの大きな

    emonkak
    emonkak 2015/08/30
  • The LLVM Project Blog

    LLILC : An LLVM based compiler for dotnet CoreCLR. The LLILC project (we pronounce it "lilac") is a new effort started at Microsoft to produce MSIL code generators based on LLVM and targeting the open source dotnet CoreCLR. We are envisioning using the LLVM infrastructure for a number of scenarios, but our first tool is a Just in Time (JIT) compiler for CoreCLR. This new project is being developed

    The LLVM Project Blog
  • Announcing Clasp

    Hello, everyone! Click here for up to date build instructions Today I am happy to make the first release of the Common Lisp implementation “Clasp”. Clasp uses LLVM as its back-end and generates native code. Clasp is a super-set of Common Lisp that interoperates smoothly with C++. The goal is to integrate these two very different languages together as seamlessly as possible to provide the best of b

    Announcing Clasp
  • 米Dropbox、LLVMベースのPython実装「Pyston」を開発 | OSDN Magazine

    米Dropboxは4月3日、オープンソースのPython実装「Pyston」を発表した。LLVMのJITエンジンを利用するPython実装で、より高いパフォーマンスを目指すという。 PystonはLLVMおよびLLVMのJITJust In Time)実行エンジンを使用して構築されたPython実装。Python 2.7互換の実装で、現時点ではx86_64プラットフォームでのみ動作し、動作テストはUbuntuで行っているという。 パースされたPythonコードをLLVMの中間表現(IR)に変換し、LLVMのオプティマイザを経てLLVM JITエンジンで実行可能なコードを生成する。LLVMには最適化パスなど最適化のための仕組みが多数含まれており、高速なコードを精製できるとしている。現時点での性能については「CPythonよりも上だがPyPyよりは劣る」と報告されている。 Dropboxでは

    米Dropbox、LLVMベースのPython実装「Pyston」を開発 | OSDN Magazine
  • LLVM が提案する C言語へのモジュール機能追加

    11月の LLVM developer meeting で Apple の Dong Gregor 氏が,C言語へのモジュール機能の追加に関するプレゼンテーションを行った。その要旨は次のようなものだ。 プログラマやツール一般にとって,Cプリプロセッサは昔から悩みの種でした。プログラマは拡大するマクロ汚染や行儀の悪いヘッダのインクルード順などの問題と戦わなければなりません。これらの問題を軽減するため,いつもさまざまな回避手段が用いられてきました。LONG_MACRO_PREFIXES や include ガード,場合によってはライブラリマクロの #undef といった方法です。 一方,ツールは同じヘッダを繰り返し処理することに関連した,マクロ特有のスケーラビリティに関する問題への対処を余儀なくされます。実行ごとに異なるプリプロセス処理のコンテキストによって,ヘッダの解釈される方法が影響を受け

    LLVM が提案する C言語へのモジュール機能追加
    emonkak
    emonkak 2014/03/15
  • LLVMによるプログラミング言語の実装 – 日曜研究室

    最近の投稿 今年の進み具合をプログレスバーで表示する 2025/1/5 日曜日 問題: 積み木を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 木曜日 Ge

  • 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
  • 1