タグ

gccに関するsyohexのブックマーク (40)

  • Static analysis updates in GCC 11 | Red Hat Developer

    I work at Red Hat on the GNU Compiler Collection (GCC). In GCC 10, I added the new -fanalyzer option, a static analysis pass for identifying various problems at compile-time, rather than at runtime. The initial implementation was aimed at early adopters, who found a few bugs, including a security vulnerability: CVE-2020-1967. Bernd Edlinger, who discovered the issue, had to wade through many false

    Static analysis updates in GCC 11 | Red Hat Developer
    syohex
    syohex 2021/01/29
  • はてなブログ | 無料ブログを作成しよう

    うめぇヨーグルトソースでもいかがですか。個人差にもよりますが。もしよろしければ。 お久しぶりです。 最近うんめぇ〜と思ってるヨーグルトソースがあるので、書いていこうと思います。 ヨーグルトとハーブ類をもりもり使うので、そういうのがべられない方にはうんめぇソースではないです。ごめんなさい…。もしよろしければお茶だけも…旦~ 【用意する…

    はてなブログ | 無料ブログを作成しよう
    syohex
    syohex 2015/04/22
    提供されるライブラリのヘッダファイルのエラーがうざいときなどに使えそう
  • GCCのインラインアセンブラと間接分岐 - mirichiの日記

    この記事を書いている途中に@miura1729さんがmrubyにインラインメソッドキャッシュを実装したという発言が。 https://github.com/miura1729/mruby/commit/ed3ef94a4a50946dfe237c27d53375cc4e31ca84 インラインメソッドキャッシュというのは命令列の中にメソッド検索の結果を書き込んで、次の呼び出しはその情報を利用してメソッド検索を省くテクニックだ。Ruby1.9のVMにも実装されている。 ただ、Rubyではメソッドを動的に書き換えることができるため、インラインメソッドキャッシュの内容が古くなってしまうと使えない。その判定や更新についてはコードをざっと見た限りは実装されていないっぽいので、実際に取り込まれるまでにはもうちょっといじる必要があるだろう。 いつか可変長OP_SENDを実装したらインラインメソッドキャッ

    GCCのインラインアセンブラと間接分岐 - mirichiの日記
  • x86とGCCと分岐と私 - mirichiの日記

    mrubyのVMはoptableに命令と実際のアドレスの変換テーブルをおいて、gotoのときにそれを使って変換→ジャンプをしているのでダイレクトスレッデッドじゃなくてトークンスレッデッドじゃないのかと思う今日この頃。識者の意見求む。 今回はCPUのアーキテクチャに深く依存する分岐予測の話。長いしわかりにくい。他人への説明用ではなく自分用の整理と考えられたし。 1.分岐とは アセンブラでいうJMP系、CALL系、RETを言う。プログラムカウンタを変更して任意の位置に実行位置を移動する。Cだと制御系の文(if、while、for、gotoなど)や関数呼び出しがそれらの命令に変換される。CPUのレベルでは条件無しのJMPも分岐と表現する。 CPUアーキテクチャ側から見ると分岐命令は大きくわけて4つ。 ・無条件分岐 ・条件分岐 ・間接分岐 ・リターン である。 2.分岐予測とは CPUはIntel

    x86とGCCと分岐と私 - mirichiの日記
    syohex
    syohex 2012/08/03
    分岐予測
  • Essential Abstractions in GCC '11, Workshop on GCC Internals

    syohex
    syohex 2011/07/10
  • GCC Resource Center for GCC Internals

    About GCC GCC is an acronym for GNU Compiler Collection. It is the de-facto standard compiler generation framework for all distros on GNU/Linux and many other variants of Unix on a wide variety of machines and is one of the most dominant softwares in the free software community. It supports several input languages for a variety of operating systems on more than 30 target processors. More back ends

    syohex
    syohex 2011/04/10
  • 彼女の友人がGCCの中の人から聞いた話 - Yet Another Ranha

    以下,エイプリルフールの記事として書いたものなので現代において読む価値はありません. ブログには地震後初めて記事を書く事になって、生存報告としては明らかに遅いですね…。でも、twitterでは元気にやっていました。今は実家にいます。 さて、つい先日東京で言語雑談会というイベントがあって、その折につくばのお家の現状を見て来ました。特別大変な事が起こっていたわけでもなく心底ホッとしました。 その翌日には、彼女と東京は新宿バルト9でサヨナラノツバサを観たのですが、その折にgcc-4.6( http://gcc.gnu.org/gcc-4.6/changes.html )の話がでました。 gccの話が出たのはCランゲッジの話をしていたからなのですが、sequence pointをどうして副作用完了点と訳したのでしょうか、とかそういう疑問が発端だった気がします。 "副作用完了点"を認識した事の無い方

    syohex
    syohex 2011/04/03
    あとで読む
  • "White paper" about GCC front-end internals

    syohex
    syohex 2011/03/08
    GCCフロントエンドに関する論文。あとで読む
  • fast strlen and memchr by SSE2 (mitsunari@cybozu labs)

    strlen()とmemchr()のSIMD版を作ってみました. 今回は最速よりもお手軽さを重視したのでアセンブリ言語ではなくintrinsic関数を使っています.そのためVisual Studio 2008, gcc 4.xの両方でコンパイルでき32-bit, 64-bit OS上で動作します. WindowsLinuxでのみ確認していますが恐らくIntel Mac OS X上でも動作するでしょう(sample source). ベンチマークはランダムな長さの文字列の平均長(average length)を変化させつつ取りました.数値は1byteあたりにかかった処理時間比で小さいほど速いことを表します. strlenが3種類(ANSI, BLOG, SSE2)とmemchrが2種類(ANSI, SSE2)あります.BLOGというのは今回試してみようというきっかけになったCounting

    syohex
    syohex 2011/02/11
    intrinsic関数で SSE2を使っての高速化
  • __builtin_expectの効力 - 初学者の箸置

    RLogをいじってて知った__builtin_expectを試してみた。__builtin_expectはある式がほとんどの場合に決まった定数になる、と言う場合に分岐予測のヒントなどを与えて高速化を計るためのgccディレクティブだそうな。 RLogはdormant(休眠)状態のログファシリティに最適化してあって、プロダクションコードにログコードを残しっぱなしでもさほどデグレしないのが売りなんだけど、そのカラクリがこれ。 で、RLog自身についてはあとで書く。 どうかく? 具体的には __builtin_expect(A,B)と書いた場合 Aが定数 Bである事を期待する、というヒント情報になる。 例えば、比較演算子がほとんどの場合成り立たない、と言う場合 __builtin_expect(, 0) となる。 #include <stdio.h> #ifdef EXPECT #define E

    __builtin_expectの効力 - 初学者の箸置
    syohex
    syohex 2011/01/14
  • Kernel/VM Advent Calendar 33 日目 @hdk_2 - いろいろ

    Kernel/VM Advent Calendar 33 日目 @hdk_2: gcc/as でリアルモード遊び カーネル/VM Advent Calendar : ATND 2011-01-08 「低レイヤーなネタを」というお誘いがありましたので、低レイヤーなネタでアセンブラーと仲良くしていきたいと思います。x86 のリアルモードに関するネタです。現在も広く使われている gcc と、binutils に含まれる as を使います。 その 1: リアルモードで実行されるコードをアセンブリ言語で書く アセンブリ言語で書く、という話で何の変哲もありませんが、昔懐かしい MASM や TASM に慣れ親しんだ人には as の AT&T 表記が厄介かも知れません。ちなみに私は MASM よりも R86 (LSI C-86 試版に付属のアセンブラー) を好んで使っていました。ジャンプ命令を自動的に

  • GCC Compile Server - 兼雑記

    http://per.bothner.com/papers/GccSummit03/gcc-server.pdf を読んでみました。7年前の話で、かつ今実現してる気配がないので失敗したんでしょうけど、まぁコンパイラの state を再利用するには何をしなければならなくて、何が難しいか、みたいなことがざっとわかる感じでした。 まずは pre-compiled header なんかも似たような目的だねーとかそんなこと。 1章はとりあえず gcc --server とかいうオプションで起動すると既に動いてるサーバを使いますよ、と。 2章はサーバとクライアントのやりとりの仕方について。ちょっと面白いと思ったのはファイルが更新された時には、何者かがファイルが更新されたと伝えなければならない、ということ。 Xcode に組み込むつもりだったってことですかねえと思います。 3章は共通の初期化とかは一回で

    GCC Compile Server - 兼雑記
    syohex
    syohex 2010/12/08
  • Var_Tracking_Assignments - GCC Wiki

    Please do not modify this page directly. Instead, send suggestions to the author. A plan to fix local variable debug information in GCC by Alexandre Oliva <aoliva@redhat.com> 2007-12-20 draft Introduction The DWARF Debugging Information Format, version 3, determines the ways a compiler can communicate the location of user variables at run time to debug information consumers such as debuggers, prog

  • 革命の日々! Cross compilers available on kernel.org

    ふーん Date: Thu, 25 Nov 2010 11:02:04 +1100 From: Tony Breeds To: Linux Kernel ML Cc: Mikael Pettersson , Rabin Vincent , =?utf-8?B?TcOlbnMgUnVsbGfDpXJk?= , linux-arm-kernel@lists.infradead.org Subject: Cross compilers available on kernel.org Hi All, I've just added 4.4.5 and 4.5.1 hosted on i686 and x86_64 to: http://kernel.org/pub/tools/crosstool/files/bin/ These compilers do not have libc support

  • はてな

    syohex
    syohex 2010/10/14
  • はてなブログ | 無料ブログを作成しよう

    超絶品!死ぬまでに一度はべてほしい煮込み10選 ああ。いかにもインターネット!みたいなタイトルをつけてしまった。 「超絶品!死ぬまでに一度はべてほしい煮込み10選」て。読んでほしすぎて大仰な形容詞をつけて数字を入れて読み手の注意を引くタイトル、もうネット記事まるだしである。 でも、わかってほしい。…

    はてなブログ | 無料ブログを作成しよう
  • めくるめくマシン記述の世界 - .mjtの日記復帰計画

    prev: http://d.hatena.ne.jp/mjt/20100811/p1 コンパイラやJITCを作る上で、マシン記述(MachineDescription)は現代的には必須のテクニックになっている。例えば、IA32やARMの世界ではCPUのモデル毎に使用できる命令が大幅に異なり、Xtensaのように生成的なプロセサも存在する。コンパイラを特定のCPUにべったり依存する形で書くことは殆んどなく、何らかのかたちで、 CPUにはどのようなレジスタが有るのか CPUの使える命令は何か CPU命令が利用/破壊するレジスタは何か といったことを統一的なフォーマットで記述し、可能なかぎりマシン依存部を減らす努力が求められている。 http://wiki.osdev.info/?MachineDescription gccのケース: CGENと.md GCCは.mdという形で、CPUが利用で

    めくるめくマシン記述の世界 - .mjtの日記復帰計画
  • 鬼斬: ターゲット環境/クロスコンパイラの構築方法/gcc-alpha

    syohex
    syohex 2010/06/16
    glibcのクロスコンパイルについて
  • Writing a GCC Front End | Linux Journal

    GCC, the premier free software compiler suite, has undergone many changes in the last few years. One change in particular, the merging of the tree-ssa branch, has made it much simpler to write a new GCC front end. GCC always has had two different internal representations, trees and RTL. RTL, the register transfer language, is the low-level representation that GCC uses when generating machine code.

  • KMC Staff Blog:GCCでリンク時に不要なコードとデータを削除する方法

    2010年04月26日 GCCでリンク時に不要なコードとデータを削除する方法 これもまた、ELC(Embedded Linux Conference)でのセッションの紹介です。 ELCのスライドのページのDenys Vlasenkoさんの"Link time dead code and data elimination using GNU toolchain"を見てください。 組み込みシステムではやはりコードやデータのサイズの削減が必要になる場面がしばしばあります。これを毎回手作業でやるのではscaleしません。このセッションではGNU Tool chainでこれを行う方法を紹介しています。 必要なバージョンはgcc 4.x 以上、binutils 2.18以上。 gcc 4.5から入ったlto(link time optimization)はこのセッションの話とは別です。 通常はリンクす