タグ

compilerに関するgologo13のブックマーク (10)

  • Optimization killers

    Introduction This document will contain advice to avoid writing code that will perform significantly worse than expected. Specifically those patterns that cause V8 (relevant to Node.JS, Opera, Chromium...) to refuse to optimize the affected function. vhf is also working on a similar project that tries to list every killers in V8 Crankshaft Engine: V8 Bailout Reasons. Some V8 background In V8 there

    Optimization killers
    gologo13
    gologo13 2015/03/17
    V8が最適化できないパターンとその回避策について
  • JSX 速さの秘密 - 高速なJavaScriptを書く方法

    JavaScript で高速なコードを書こうとする際に、はまりがちな罠と、JSX のコンパイラでどのように対処しているのかを紹介

    JSX 速さの秘密 - 高速なJavaScriptを書く方法
  • clang+llvmでさりげなくすごいコードが生成されていた話。 - 組み込みの人。

    先日llvm 3.3がリリースされました。aarch64(arm 64bit)のコードが生成できるようになったということなので、ソースからビルドして遊んでいたのですが、さりげなく凄く最適化されたコードが生成されているのに気がつきました。aarch64だと今は実行して確認できる環境が手元に無いので、普通のarmv7-aで同じことを試しました。 ここで使ったコードとその結果はgistに貼りました。 https://gist.github.com/tetsu-koba/5835724 ソースコード int sum(int x) { int sum = 0; int i; for (i = 1; i <= x; i++) { sum += i; } return sum; } 1からnまでの総和を求める関数です。1から100までの総和が5050なのはガウス少年の逸話で有名ですね。 gcc 4.8.

    clang+llvmでさりげなくすごいコードが生成されていた話。 - 組み込みの人。
    gologo13
    gologo13 2013/06/23
    すごい。こんなことできるのか
  • LLVM - Wikipedia

    LLVM(エルエルヴィーエム、 またはエルエルブイエム)とは、コンパイル時、リンク時、実行時などあらゆる時点でプログラムを最適化するよう設計された、任意のプログラミング言語に対応可能なコンパイラ基盤である。当初は、LLVMの名称の由来は、Low Level Virtual Machine (低水準仮想機械) の略であるとしていたが[3]、現在は、何の頭文字でもないとしている[4]。 概要[編集] LLVMは、JavaJava VMの関係のように、まず仮想機械をターゲットとした中間コード(ビットコード)を生成し、その仮想機械向けコードを特定のマシンの機械語に変換する。この時言語やプラットフォームとは独立した最適化を行う。この方法によってLLVMは言語からもアーキテクチャからも独立しており、それぞれに特化した、プログラミング言語固有のモジュールと、マシン向けコード生成部を用意することにより様

    gologo13
    gologo13 2013/03/09
    やべぇ全然わからん
  • コンパイラ — KYOTO-U OCW

    授業の特色 教科書に準拠したPowerPoint資料に基づいて,講義中心の授業を行う. 授業の紹介 計算機の基的ソフトウェアであるコンパイラやインタプリタなどの言語処理系とそれらの関係などについて概説し,その内の特にコンパイラについて,字句解析手法,構文解析手法,コード生成手法について詳説する.取り上げる構文解析法は,再帰的下向き構文解析法,LR構文解析法など.lexやyaccなどのコンパイラ生成ツールについても触れる. 技術的必要条件 オープンコースウェアの講座資料をご覧いただくには、アクロバットリーダーが必要です。アクロバットリーダーは、こちらのAdobe社 Acrobat Reader ダウンロードサイトからダウンロードできます。 Copyright 2008-2011, by the Contributing Authors. Cite/attribute Resource. 0

  • Java仮想マシン - Wikipedia

    スタック[編集] bipush、 sipush - byte値、 short値をスタックに積む。 ldc - コンスタントプール内の4バイトの定数(int値、float値、java.lang.String)の内1バイト以内でエントリ番号を指定できるものをスタックに積む。 ldc_w - エントリ番号が1バイトでは足りないときに使う。 ldc2_w - コンスタントプール内の8バイトの定数(long値、double値)をスタックに積む。 iconst_m1、 iconst_0、 iconst_1、 iconst_2、 iconst_3、 iconst_4、 iconst_5 - intの-1、0、1、2、3、4、5をスタックに積む。 lconst_0、 lconst_1 - longの0、1をスタックに積む fconst_0、 fconst_1、 fconst_2 - floatの0、1、2

    Java仮想マシン - Wikipedia
  • TCC : Tiny C Compiler

    News [Note: I am no longer working on TCC. Check the mailing list to get up to date information.] Features SMALL! You can compile and execute C code everywhere, for example on rescue disks (about 100KB for x86 TCC executable, including C preprocessor, C compiler, assembler and linker). FAST! tcc generates x86 code. No byte code overhead. Compile, assemble and link several times faster than GCC. UN

  • ソフトウェアサイエンス実験III J-9 (2009年度) コンパイラ実験

    担当 : 南出 靖彦 (minamide@cs.tsukuba.ac.jp) TA : 佐久間 雄和 (sakuma@score.cs.tsukuba.ac.jp)関連資料 宣言型プログラム論のホームページ Objective Camlのマニュアル 参考図書 入門OCaml: プログラミング基礎と実践理解, OCaml-Nagoya著, 毎日コミニュケーションズ プログラミング in OCaml: 関数型プログラミングの基礎からGUI構築まで, 五十嵐淳著, 技術評論社 プログラミングの基礎, 浅井 健一 著, サイエンス社 実験の手引き 1〜6節 7〜8節 9〜10節 11〜12節 2008年度の実験の手引き This document was translated from LATEX by HEVEA.

  • d.y.d.構文解析の話をしよう

    16:46 08/03/30 YZ1.DLL 0.30 リリース しました。 具体的には、ヘッダの格納ファイル数フィールドに実際より大きい値が入ってると変なとこ読もうとして落ちるバグ修正。 GreenPad の修正は来週くらいには…。 Booooooost Boost 1.35.0 来てました。 Asio と Fusion と GIL の三枚看板がでかいですが、Bimap が地味に便利だ。 あと、mbさんのEgg のレビューが明日からでしょうか。(また スケジュール から消えてますが…Protoが入る前までロールバックしてる?) 他人事ながらドキドキ。 17:36 08/03/28 ケース 十年来の疑問なんですが、"case" に単独で対応する日語ってなんになるんですかね。 "case-insensitive" や "lowercase" の "case"。単に "case-insens

  • コンパイラ(gccコマンド)の使い方

    gccはジーシーシーと読む.GNUが作成し,UNIX,Windowsなどで動作するフリー のコンパイラである. ここでは,C言語をコンパイルする際のgccの利用方法を説明するが,C++の場合 にはgccというところをg++に変更すればほぼそのまま利用可能である. イタリック体は,実行時には適当に変えること.ここでは,サンプルとし て,test.cをコンパイルしてtest.o(オブジェクトファイル)または test(実行ファイル)を作成する場合についての説明をする. 主なオプション一覧 -g   (コンパイル,リンク時) コンパイル,リンク時にDEBUG情報を付加する.dbx,gdbなどのデバッガ を使用するときに必要. -c   (コンパイル時) コンパイルのみ行う(オブジェクトファイルを生成する). ex: gcc -c test.c   → test.oを生成 -o test.o  (

  • 1