並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 75件

新着順 人気順

GCCの検索結果1 - 40 件 / 75件

 GCC75   programming  C++     lld  
  • コンパイラが作ったバイナリをつなぎ合わせるプログラム 「lld」の作者が語る、リンカの仕組み


    Kernel/VMmold2 LLVMlld mold mold LLVMlld
      コンパイラが作ったバイナリをつなぎ合わせるプログラム 「lld」の作者が語る、リンカの仕組み
    • 「//このコメントを消したら動かない」は大体Shift_JISの2バイト目が原因で発生する - Qiita

      TL;DR Shift_JISにしただけでコンパイラが通らなくなる恐ろしい事件とその回避法について。 \ (¥)のASCIIコードは0x5c 表、能は良くない UTF-8は神 2023/12/06追記 誤りがあったので訂正します。こんな読まれると思ってなかったので正直ちょっとびっくりしていますが、いろいろコメントありがとうございました。(ツイート等全て拝見しました。) Shift_JISが悪いわけではない(デフォルトのエンコーディング設定の問題)→追記しました UTF-8にはUTF-FSSという仕様でこの問題が回避されている→マジでタメになる知識ありがとうございます OSによってデフォルトのエンコーディング設定が異なるせいで、デフォルト環境での動作がOSにより異なる→なるほど?(調査中) CRLFとLF問題では→なるほど?(調査中) そんな問題何を今更→UTF-8が出てから生まれたからです

        「//このコメントを消したら動かない」は大体Shift_JISの2バイト目が原因で発生する - Qiita
      • C言語をマスターしたい人はGCCのバージョン14を使いましょう - pyopyopyo - Linuxとかプログラミングの覚え書き -


        CC++gcc-14使 gcc-14 C C6 int main() { int buf[10]; buf[10] = 0; return 0; }  : : :  buf[10]=0 CC gcc 14  6gcc14使  test.c 
          C言語をマスターしたい人はGCCのバージョン14を使いましょう - pyopyopyo - Linuxとかプログラミングの覚え書き -
        • 2で割ることと3で割ること - Qiita

          この記事でお題にするのはCPUレジスタ上の整数除算です。以下、単に除算とも書きます。 除算は非常に高コストな演算なため、コンパイラは最適化によって、できるだけ整数除算を別の計算に置き換えようとします。 最適化ができる場合の一つとして、割る数が定数である場合があります。頭のいいコンパイラは、除算を乗算とビットシフト等を駆使した演算に置き換えます。この記事では、そういった最適化の背景にある理屈を部分的に解説します。 計算機環境としてはモダンなx86 CPUを仮定します。したがってレジスタは32/64ビットであり、負数は2の補数表現になっています。ある程度は他の命令セットでも通用する話になっているかもしれません。 そもそも整数の除算とは プログラミングにおける整数の除算の定義について確認します。整数$n$を整数$d$で割るとき $$ n = q \times d + r $$ が成り立つように除

            2で割ることと3で割ること - Qiita
          • printfに4285個アスタリスクをつけるとclang++が死ぬ - Qiita

            def check(n) s = "*"*n f = open("test.cpp","w") f.puts <<EOS #include <cstdio> int main(){ (#{s}printf)("Hello World\\n"); } EOS f.close() return system("clang++ test.cpp") end check(ARGV[0].to_i) $ ruby check.rb 10000 clang: error: unable to execute command: Illegal instruction: 4 clang: error: clang frontend command failed due to signal (use -v to see invocation) Apple LLVM version 10.0.1 (clang

              printfに4285個アスタリスクをつけるとclang++が死ぬ - Qiita
            • ゲーム開発者のための C++11~C++20, 将来の C++ の展望 - CEDEC2020 - Speaker Deck

              ゲーム開発者のための C++11~C++20, 将来の C++ の展望 【CEDEC ページ】https://cedec.cesa.or.jp/2020/session/detail/s5e8327a52702c 【解説付きの書籍版 📚】https://zenn.dev/tetsurom/books/cpp11-cpp20-for-game-developers

                ゲーム開発者のための C++11~C++20, 将来の C++ の展望 - CEDEC2020 - Speaker Deck
              • Pythonコードを35000倍に高速化したい

                はじめに Pythonは世界的にも人気のあるプログラミング言語ですが、実行速度については課題があります。Pythonの実行速度を高速化したい、という要求は根強く、これまでにも様々な処理系が開発されています。 この記事はPythonで書かれたコードを35000倍に高速化するにはどのような方法があるかについてまとめたものです。 この記事は: Pythonで書かれたアルゴリズムを35000倍に高速化する 事前コンパイル、並列化、SIMD演算を駆使する 最終的に44000倍まで高速化できた なぜ35000倍? 2023年5月2日にModular社よりPythonの使いやすさとC言語の性能を兼ね備える新しいプログラミング言語、Mojoの開発について発表がありました。低レベルのハードウェア向けにコンパイル可能なこと、文法的にはPythonを踏襲しており、既存のPythonライブラリを利用可能であること

                  Pythonコードを35000倍に高速化したい
                • リンカ


                      C C      
                  • malloc.c を読む (malloc / free)

                    このシリーズではこれらの関数が内部でどのように処理されるのかを調べていきます。 malloc.c を読む (malloc / free) malloc.c を読む (bins) malloc.c を読む (arena) 今回は malloc() free() の全体像を紹介します。 注意としてここでの目的は全体を俯瞰して、詳細を詰めずとも各 bins の役割を理解し、攻撃手法を理解できるようにすることです。それに合わないマルチスレッドや最適化などにおける緻密なトリックやコーナーケースなどは暗黙的に実装されていると仮定します。その詳細についてはソースコードや他の資料を参考にしていただきたいです。 ここで扱う glibc のバージョンは v2.38 です。また glibc のソースコードはブラウザ上で読むことができます。 https://elixir.bootlin.com/glibc/lat

                      malloc.c を読む (malloc / free)
                    • ネイティブコンパイルEmacsの登場

                      日本時間の2021年4月26日午前3時6分、Emacsのmasterブランチにfeature/native-compブランチがマージされました(コミット:Merge branch ‘feature/native-comp’ into into trunk)。これにより、HEADのEmacsをビルドすると、Native compilation機能を兼ね備えたネイティブコンパイルEmacs、通称Gcc Emacsが使えるようになりました。 ネイティブコンパイルEmacsの機能 # ネイティブコンパイルEmacs(以下、Gcc Emacsと呼びます)は、Andrea Corallo、Luca Nassi、Nicola Mancaの3名によるBringing GNU Emacs to Native Code という論文で詳細が説明されています。 簡単に説明すると、これまでのEmacsは、Elisp

                        ネイティブコンパイルEmacsの登場
                      • 「バグを意図的にバグのまま残す」という選択肢がある


                         gcc v12.1C++std::regex("")""     gcc v12.1使C++
                          「バグを意図的にバグのまま残す」という選択肢がある
                        • C言語から0番地へアクセスする方法についての個人的まとめ - /var/log/hikalium

                          発端はuchan_nos氏によるこのツイートでした。 C言語で、本当にメモリの0番地にデータを書きたいときはどうすりゃええの?— うー@技術書典8 Day1う31 BitNOS (@uchan_nos) 2020年2月12日 それに対する私のリプライ: uint8_t *p = 1; p--; *p = v;— hikalium (@hikalium) 2020年2月12日 私はこれで話が終わると思っていたのだが、どうやらそうではなかったらしく、色々な視点からの意見が加わりながら、話は混沌を極めたのでした…。 ということで、ここに私のこのツイートに対しての見解とか、わかったことをまとめておこうと思います。 私のリプライの背景について uchanさんが求める「0番地にデータを書きたい」という課題設定を、私はこのように解釈しました。 C言語において、整数0をポインタに変換すると、それはNULL

                            C言語から0番地へアクセスする方法についての個人的まとめ - /var/log/hikalium
                          • A Modern C Development Environment

                            Sometimes, C/C++ projects have a long development cycle. When working on such a project, it can be easy to take our development environment for granted, and forget about the effort invested in its bring-up. The build environment works like magic, the test framework is neatly integrated, and the CI/CD pipeline relieves us of tedious, repetitive tasks. For me, all it took was a simple thought: How d

                              A Modern C Development Environment
                            • WSL以前から40年以上続く、Windows(Microsoft)とUNIXとの関わり

                              80年代、Microsoft製のUNIXが存在していた POSIXサブシステムは2012年までサポートが続いた 現在のWindows 11では、Windows Subsystem for Linux(WSL)が動作するため、(それ自体はUNIXではないものの)UNIXからのアプリケーションを簡単に動作させることができる。 かつてMicrosoftは、x86版UNIXのライセンスを持っており、XENIXと呼ばれる製品を販売していた。また、Windows NTに「POSIXサブシステム」、のちに「Windows Service for UNIX(SFU)」と呼ばれる機能があった。そういうわけで、WindowsとUNIXは切れない“縁”があったのだ。 Windows NTのPOSIXサブシステムやその搭載理由などに関しては、過去記事(「Windows Subsystem for Linuxの中身

                                WSL以前から40年以上続く、Windows(Microsoft)とUNIXとの関わり
                              • C++は本当にRustに速度で負けるのか 〜「RustがC++に速度で勝った話」のベンチマークを追試する〜 - Qiita

                                追記: 本記事は g++ について書かれており、clang については補足で述べる程度でしたが、clang側の検証結果が間違っておりました。 別途 clang++ で検証した記事も書きましたので、ご覧いただけますと幸いです。 本記事の目的 昨日、株式会社フィックスターズの「Fixstars Tech Blog /proc/cpuinfo」に以下の記事が掲載されました。 RustがC++に速度で勝った話 - Fixstars Tech Blog /proc/cpuinfo 本記事では、上記記事の 手元環境における追試 C++の敗因/Rustの勝因分析 条件をある程度統一した際のベンチマーク結果 の3点を行います。 ベンチマーク環境 OS Fedora 30 CPU AMD A6-1450 Memory DDR3-1333 4GB x 1 (4GB) GCC 9.2.1 Rustc 1.39.

                                  C++は本当にRustに速度で負けるのか 〜「RustがC++に速度で勝った話」のベンチマークを追試する〜 - Qiita
                                • セルフホスト可能なCコンパイラを書く


                                   CCCCCC  C
                                  • 最近のC言語と、次期C標準(C23)


                                    CC CC99C11/C17C23 C99 C99 _Bool _Complex C++ std::complex C++11 VLA    16 fma FMA (fused multiply-add)  #pragma STDC FENV_ACCESS, #pragma STDC CX_LIMI
                                      最近のC言語と、次期C標準(C23)
                                    • C++ コンパイル時「出力」 ~C++にできないことはない~ - Qiita


                                       C++   GCC       C++  使  FizzBuzz  #include <array> #include <string_view> #include <algorithm> #include <concepts> #include <iostream> template <std::unsigned_integral T> conste
                                        C++ コンパイル時「出力」 ~C++にできないことはない~ - Qiita
                                      • トーバルズ氏、Linuxカーネルを「C89」から「C11」コードに移行する準備


                                        Steven J. Vaughan-Nichols Special to ZDNET.com    2022-03-04 11:33 LinuxCCC1989C89C89ANSI X3.159-1989ANSI CLinus TorvaldsC89Linux2011C11 C89CC89
                                          トーバルズ氏、Linuxカーネルを「C89」から「C11」コードに移行する準備
                                        • C++コンパイラはあなたよりも良いコードを書く - Qiita


                                           C++C++使DRustC++C++RustRustunsafeRustUnsafe RustC++ C
                                            C++コンパイラはあなたよりも良いコードを書く - Qiita
                                          • bpftraceを使ってバイナリの謎の性能劣化を突き止めろ - Cybozu Inside Out | サイボウズエンジニアのブログ

                                            サイボウズ社内ではC++で開発している製品があります。 未知のバッファオーバーランなどの脆弱性への対策として、重要なコンポーネントについてはプロダクション環境で利用しているバイナリでも AddressSanitizer を有効にしてビルドしています。 その製品で利用しているコンパイラをgcc5.3.0からgcc7.5.0に更新したところ性能劣化が発生しました。 製品コードとは別の部分が原因のため、根本原因の追跡が難しそうです。perf,bpftraceを使って性能劣化を追いかけてみましょう。 本記事で利用しているAddressSanitizer, bpftrace, perfコマンドはネット上に良質な記事がありますので、使い方などの解説は今回は省略させていただきます。 gcc7.5.0において、性能劣化が発生する再現コードとして次のようなものを用意しました。 #include <strin

                                              bpftraceを使ってバイナリの謎の性能劣化を突き止めろ - Cybozu Inside Out | サイボウズエンジニアのブログ
                                            • 次期C標準 (C23) の内容が固まったらしい

                                              C23については最近のC言語と、次期C標準(C23)でも軽く紹介しました。 今回、C23入りする内容が大体固まったようなので改めて紹介します。 この記事を書いている時点での最新の公開されたWorking Draftは N2912 N3047 N3054 N3096です。ただし、C2y向けの最初のドラフトN3220もあり、そちらの方が実際の内容に近いかもしれません。 内容については会議参加者の投稿も参考にしています: https://twitter.com/rcs/status/1550526425211584512 C23 now finalized! : C_Programming というわけで、C23に入る主な機能はこちらです: C23に入る主な機能 POSIXの機能の取り込み: strdup, strndup, memccpy, gmtime_r, localtime_r C++の機

                                                次期C標準 (C23) の内容が固まったらしい
                                              • MIR: A lightweight JIT compiler project | Red Hat Developer

                                                For the past three years, I've been participating in adding just-in-time compilation (JIT) to CRuby. Now, CRuby has the method-based just-in-time compiler (MJIT), which improves performance for non-input/output-bound programs. The most popular approach to implementing a JIT is to use LLVM or GCC JIT interfaces, like ORC or LibGCCJIT. GCC and LLVM developers spend huge effort to implement the optim

                                                  MIR: A lightweight JIT compiler project | Red Hat Developer
                                                • MS-DOS(PC-98)のアプリケーションをC言語で作る - 少ないリソースを酷使する


                                                  PC-98+FreeDOSMS-DOS 1 MS-DOS  CMS-DOS OSUbuntu 20.04 PC-98xnp2kai rev.22 d3fe02a FreeDOS(98)20200709HDICinstall i8086GCC CGCC便 GCC32bit || 64bit 16bitPC-98x1 16GCCDOS 
                                                    MS-DOS(PC-98)のアプリケーションをC言語で作る - 少ないリソースを酷使する
                                                  • 822823回マクロを展開するとGCCが死ぬ - Qiita

                                                    はじめに Rui UeyamaさんのCコンパイラ作成集中講座 (2020) 第14回を聞いて知ったのですが、GCCは「同じマクロ」が定義された時に、マクロの再定義警告をしないんですね。例えばこんなコードです。 #include <cstdio> #define A 1 #define B 1 #define A 1 // No warning #define B 2 // test.cpp:7:0: warning: "B" redefined int main() { printf("%d %d\n", A, B); }

                                                      822823回マクロを展開するとGCCが死ぬ - Qiita
                                                    • mold: modern linker

                                                      mold: modern linker Rui Ueyama

                                                        mold: modern linker
                                                      • The MIR C interpreter and Just-in-Time (JIT) compiler | Red Hat Developer

                                                        For the past two years I've worked on a project implementing a universal lightweight Just-in-Time (JIT) compiler known as MIR. The cornerstone of the project is a machine-independent medium-level intermediate representation (MIR). A big part of the project consists of code that compiles C source code into MIR. Because MIR can be interpreted and just-in-timed, I easily extended this C-to-MIR compil

                                                          The MIR C interpreter and Just-in-Time (JIT) compiler | Red Hat Developer
                                                        • 2021年6月2日 もうFSFにとらわれない ―GCC運営、FSFへの著作権移譲を開発者に求めないポリシーに | gihyo.jp

                                                          Linux Daily Topics 2021年6月2日もうFSFにとらわれない ―GCC運営、FSFへの著作権移譲を開発者に求めないポリシーに GCCプロジェクトを運営するGCC Steering Committeeは6月1日、GCC 9のポイントリリース「GCC 9.4」の公開に合わせ、GCCの著作権譲渡ポリシーの変更を発表、今後はFree Software Foundation(FSF)への著作権譲渡をコントリビュータに依頼しない方針を明らかにした。GCCをはじめとするGNUプロジェクトへのコントリビュータはこれまで自身が開発したプログラムの著作権をFSFに移譲するよう求められてきたが、GCCに関してはその縛りがなくなることになる。 Update to GCC copyright assignment policy GCC Steering CommitteeメンバーであるDavid

                                                            2021年6月2日 もうFSFにとらわれない ―GCC運営、FSFへの著作権移譲を開発者に求めないポリシーに | gihyo.jp
                                                          • GNU ldで一部をスタティックリンクにする | fukasawah.github.io

                                                            tl;drgccなら-Wl,...でリンク時のオプション(==ldコマンドのオプション)を渡せる。オプションが複数ある場合はカンマで繋げる。 ldのオプションで動的(-Bdynamic)と静的(-Bstatic)を選ぶことができ、これは混在させることができる。 例: glibc以外をstatic linkしたい g++ -o a.out main.o -static-libgcc -static-libstdc++ -Wl,-Bdynamic,-lc,-ldl,-lpthread,-Bstatic,-lboost_program_options,-lboost_filesystem,-lboost_system,-lssl,-lcrypto,-lz -lc,-ldl,-lpthreadあたりがglibcのライブラリ。 背景時代はコンテナや!シングルバイナリのほうが扱い楽やで!!「実行する環

                                                            • gccの最適化指示-Ofastは危険 - Qiita

                                                              はじめに gccの最適化指示である-Ofastをお気軽に使ってる記事を見掛けたので注意喚起的なやつです。 -Ofastとは何ぞや gccのドキュメントから引用 https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-Ofast -Ofast Disregard strict standards compliance. -Ofast enables all -O3 optimizations. It also enables optimizations that are not valid for all standard-compliant programs. It turns on -ffast-math, -fallow-store-data-races and the Fortran-specific -fstac

                                                                gccの最適化指示-Ofastは危険 - Qiita
                                                              • 最適化コンパイラへのいざない (2) マルチパスコンパイラ - Qiita


                                                                   ()           AST
                                                                  最適化コンパイラへのいざない (2) マルチパスコンパイラ - Qiita
                                                                • GitHub - Rust-GCC/gccrs: GCC Front-End for Rust

                                                                  Please note, the compiler is in a very early stage and not usable yet for compiling real Rust programs. gccrs is a full alternative implementation of the Rust language ontop of GCC with the goal to become fully upstream with the GNU toolchain. The origin of this project was a community effort several years ago where Rust was still at version 0.9; the language was subject to so much change that it

                                                                    GitHub - Rust-GCC/gccrs: GCC Front-End for Rust
                                                                  • 2020年8月26日 Linuxカーネル、約2500の&quot;フォールスルー&quot;をリプレース | gihyo.jp

                                                                    Linus Torvaldsは8月24日(米国時間⁠)⁠、2020年10月のリリースに向けて開発中の「Linux 5.9」において、カーネルエンジニアのGustavo Silvaの修正パッチをマージした。このパッチではカーネル全体で使われていた2484もの「/* fall through */」および類似のコメント部分をすべて「fallthrough;」にリプレースしているほか、不要なfall-throughの削除も行われている。 Merge tag 'fallthrough-pseudo-keyword-5.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux -Linux kernel source tree Linuxカーネルのメインライン開発では、今回のパッチを提供したSilvaを中心に、s

                                                                      2020年8月26日 Linuxカーネル、約2500の&quot;フォールスルー&quot;をリプレース | gihyo.jp
                                                                    • GCC for New Contributors — GCC Contributors Guide 0.1 documentation

                                                                      GCC for New Contributors¶ This is an unofficial guide to GCC’s internals, aimed at new developers, and at plugin authors. Source: https://github.com/davidmalcolm/gcc-newbies-guide I’m a relative newcomer to GCC, so I thought it was worth documenting some of the hurdles I ran into when I started working on GCC, to try to make it easier for others to start hacking on GCC. Hence this guide. Other sou

                                                                      • で、結局 #include <bits/stdc++.h> って何? - Qiita

                                                                        hakatashiです。 競プロ界では一般的なテクニックであるにも関わらず、何かと定期的に燃えがちな話題であるbits/stdc++.h。便利ではあるけど、そもそもこのファイルって何?年齢は?性別は?家族構成は?彼女はいる?調べてみました! そもそも、bits/stdc++.hって何? GNUが開発するC++の標準ライブラリの実装であるlibstdc++のプリコンパイル済みヘッダを生成するためのソースファイルです。 具体的な中身はgccのソースリポジトリのlibstdc++-v3/include/precompiled/stdc++.hから参照することができます。見ると、CおよびC++の標準ライブラリに含まれるヘッダがすべてインクルードされており、このことから「#include <bits/stdc++.h>と書くとすべての標準ライブラリを一度にインクルードできる」という性質を持ちます。

                                                                          で、結局 #include <bits/stdc++.h> って何? - Qiita
                                                                        • Progress toward a GCC-based Rust compiler [LWN.net]

                                                                          This article brought to you by LWN subscribersSubscribers to LWN.net made this article — and everything that surrounds it — possible. If you appreciate our content, please buy a subscription and make the next set of articles possible. The gccrs project is an ambitious effort started in 2014 to implement a Rust compiler within The GNU Compiler Collection (GCC). Even though the task is far from comp

                                                                          • GCC undefined behaviors are getting wild

                                                                            Happy with my recent breakthrough in understanding C integer divisions after weeks of struggle, I was minding my own business having fun writing integer arithmetic code. Life was good, when suddenly… zsh: segmentation fault (core dumped). That code wasn't messing with memory much so it was more likely to be a side effect of an arithmetic overflow or something. Using -fsanitize=undefined quickly id

                                                                            • 「GCC 10.1」リリース、静的コード解析機能が実験的に導入される | OSDN Magazine

                                                                              The GNU Compiler Collection(GCC)開発チームは5月7日、最新のメジャーリリースとなる「GCC 10.1」公開を発表した。静的コード解析が実験的に導入され、C++20のサポートも強化した。 The GNU Compiler Collection(GCC)はGNUオペレーティングシステム向けのコンパイラとして開発がスタートしたプロジェクトで、 C/C++やObjective-C、Fortran、Ada、Go、Dなどさまざまな言語に対応するフロントエンドとライブラリを提供する。 GCC 10.1は、2019年5月に公開されたGCC 9.1に続くメジャーリリース。この間、プロジェクトはバージョン管理をSubversionからGitに変更している。 C++20のサポートが、コンパイラとlibstdc++ライブラリの両面で強化されている。constexpr関数における評価

                                                                                「GCC 10.1」リリース、静的コード解析機能が実験的に導入される | OSDN Magazine
                                                                              • GCC 12.1 Compiler Released With AVX-512 FP16, Better RISC-V Support, More C++23 Features - Phoronix

                                                                                GCC 12.1 Compiler Released With AVX-512 FP16, Better RISC-V Support, More C++23 Features Written by Michael Larabel in GNU on 6 May 2022 at 06:35 AM EDT. 6 Comments GCC 12.1 is out today as the first stable release of GCC 12. It also marks 35 years already since the release of GCC 1.0. With a year's worth of changes, GCC 12.1 is a big feature release with a lot of good stuff in it from new C/C++ f

                                                                                  GCC 12.1 Compiler Released With AVX-512 FP16, Better RISC-V Support, More C++23 Features - Phoronix
                                                                                • C言語で配列の要素数を安全に数える話


                                                                                  C sizeof(array) / sizeof(array) sizeof(var.that_has_an_array.as_a.member) / sizeof(var.that_has_an_array.as_a.member[0])  #define _countof(array) (sizeof(array) / sizeof(array[0]))使 TwitterCgcc/clang

                                                                                  新着記事