並び順

ブックマーク数

期間指定

  • から
  • まで

321 - 360 件 / 620件

新着順 人気順

コンパイラの検索結果321 - 360 件 / 620件

  • My First Language Frontend with LLVM Tutorial — LLVM 17.0.0git documentation

    Requirements: This tutorial assumes you know C++, but no previous compiler experience is necessary. Welcome to the “My First Language Frontend with LLVM” tutorial. Here we run through the implementation of a simple language, showing how fun and easy it can be. This tutorial will get you up and running fast and show a concrete example of something that uses LLVM to generate code. This tutorial intr

    • MSX-C に関する情報 - Qiita

      はじめに 『MSX-C』関連の情報を集めてみました。 MSX-C 『MSX-C』は ASCII が発売した MSX 用の C コンパイラです。元々は エル・エス・アイ・ジャパン株式会社 の『LSI C-80』の OEM だったようです。 『MSX-C』はアセンブラソースを吐くタイプのコンパイラですので、実行形式ファイルを生成するにはアセンブラとリンカが必要です。 See also: ASCII MSX-C (MSX Resource Center) LSI C-86 (Wikipedia) 準拠している C 言語の規格 ANSI C (1989) よりも前に発売された製品なので、後に制定された規格には準拠しておらず、K&R のサブセット的な実装となっています。例えば、MSX-C で利用可能なデータ型は次の 4 (3) 種類のみです。 型 長さ 範囲

        MSX-C に関する情報 - Qiita
      • k0kubun/ruby-jit-challenge 完了報告 - Smoky God Express

        16.85倍はやい僕のJIT RubyKaigi 2023 お疲れ様でした。非常に面白かったですね。k0kubun さんのRJITについての発表が面白かったので ruby-jit-challange をやりました。無事完走できたので感想記事を書こうと思います(激ウマギャグ) ※: ベンチマークから rjit が抜かれてる理由は後述 RJIT / ruby-jit-challenge ってなに k0kubun さんが Ruby で JIT を書けるような機構を作ってくれました。それをRJITと呼びます。RJIT を手を動かして体験できるチュートリアルが公開されています。親切なREADME、命令列をJITするところ以外の部分、機械語生成用のヘルパーも用意されておりおもてなしの精神がすごい。みんなぜひやりましょう github.com なお冒頭で16倍はやいっていっていますが、特定ベンチマークに

          k0kubun/ruby-jit-challenge 完了報告 - Smoky God Express
        • The Super Tiny Compiler ではじめるコンパイラ入門

          The Super Tiny Compiler とは? The Super Tiny Compiler は、わずか 200 行の JavaScript で書かれたコンパイラです。 Super Tiny の言葉どおり機能はとても限定されていて、LISP ぽい関数呼び出しを C 言語のような関数呼び出しに変換するだけです。

            The Super Tiny Compiler ではじめるコンパイラ入門
          • 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
            • Which benchmark programs are fastest? | Computer Language Benchmarks Game

              Always look at the source code. How many times slower than the fastest How many times slower, the fastest benchmark programs for selected programming language implementations are, compared to the fastest written in any of the programming languages. Notice which boxes overlap completely. Notice which spread across too large a range of values for confidence. The boxes are broken into separate groups

              • Modular: Mojo🔥 - It’s finally here!

                Since our launch of the Mojo programming language on May 2nd, more than 120K+ developers have signed up to use the Mojo Playground and 19K+ developers actively discuss Mojo on Discord and GitHub. Today, we’re excited to announce the next big step in Mojo’s evolution: Mojo is now available for local download – beginning with Linux systems, and adding Mac and Windows in coming releases. While the Mo

                  Modular: Mojo🔥 - It’s finally here!
                • Low-Level Software Security for Compiler Developers

                  1 Introduction Compilers, assemblers and similar tools generate all the binary code that processors execute. It is no surprise then that these tools play a major role in security analysis and hardening of relevant binary code. Often the only practical way to protect all binaries with a particular security hardening method is to have the compiler do it. And, with software security becoming more and

                  • 最適化コンパイラへのいざない (2) マルチパスコンパイラ - Qiita

                    記事一覧 はじめに マルチパスコンパイラ (この記事) 定数に関する最適化 プログラムの構造 対象読者 コンパイラの内部構造について興味がある方 コンパイラに関して精通している方(批評お待ちしております) ワンパスコンパイラ 突然ですが,初めてコンパイラを作るのであれば,大抵次のような構造になると思います. 図中の赤い部分は,どんなにシンプルなコンパイラでも含まれているだろうという意味を込めたものです.字句解析や中間言語生成はそれぞれ構文解析やコード生成と区別化がつかなくなっている場合もあるかと思います. ここで図中に,一つのパスと書かれているのが気になった方もいるかと思います. プログラムのとある表現(ソースコードや中間言語)は,ある操作を施されて別の表現へと移っていきます.この時,ある操作やそれを行うためのルーチン群のことをパスと呼びます. この説明だと,ASTが中間言語へ変換されるの

                      最適化コンパイラへのいざない (2) マルチパスコンパイラ - Qiita
                    • GitHub - rui314/chibicc: A small C compiler

                      chibicc: A Small C Compiler (The old master has moved to historical/old branch. This is a new one uploaded in September 2020.) chibicc is yet another small C compiler that implements most C11 features. Even though it still probably falls into the "toy compilers" category just like other small compilers do, chibicc can compile several real-world programs, including Git, SQLite, libpng and chibicc i

                        GitHub - rui314/chibicc: A small C compiler
                      • 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
                        • The Roc Programming Language

                          Roc's goal is to be a fast, friendly, functional language. It's very much a work in progress; below, you can see the current progress towards this goal. This website is intentionally unstyled as a way to emphasize the language's current level of incompleteness. The website will become more polished after the language itself becomes more polished! Roc compiles to machine code or to WebAssembly. Eve

                          • AST vs. Bytecode: Interpreters in the Age of Meta-Compilation

                            233 AST vs. Bytecode: Interpreters in the Age of Meta-Compilation OCTAVE LAROSE, University of Kent, UK SOPHIE KALEBA, University of Kent, UK HUMPHREY BURCHELL, University of Kent, UK STEFAN MARR, University of Kent, UK Thanks to partial evaluation and meta-tracing, it became practical to build language implementations that reach state-of-the-art peak performance by implementing only an interprete

                            • タネ明かし: Whitespaceコンパイラを作った話の裏側 | κeenのHappy Hacκing Blog

                              κeenです。今朝、エイプリルフールのネタ記事を書いたのでそのタネ明かしをします。タネとはいっても、ほぼ手書きなんですけどね。 WhitespaceはEdwin BradyとChris Morrisにより2003年4月1日に発表された言語です。 この言語自体エイプリルフールのジョークなんですね。 公式ページはあるのですが、繋がらないのでWebArchiveとかからアクセスして下さい。 特徴としては空白文字、タブ文字、改行文字だけで構成されているのでパッと見では何も書いてないようになる点があります。 いわゆるesoteric languageです。 今回の私のエイプリルフールのジョークは、Whitespaceを知らない人には「正直者にしか見えないコードですか?」、Whitespaceを知ってる人には「Whitespace!?んなもん書ける書けるわけないだろ!あ、そうか今日はエイプリルフールか

                                タネ明かし: Whitespaceコンパイラを作った話の裏側 | κeenのHappy Hacκing Blog
                              • Vue.js 3 の TSX を TypeScript Compiler だけで動かす方法について

                                先日の v-tokyo #11 の懇親会で質問されたので、Native TSX Support される Vue 3 でなぜ tsc だけで TSX が動作しないのかを聞かれたのでメモとして残しておこうと思います。 ちなみに Vue 3.0 beta が出た頃に既に検証し終えているコードは以下にあります。 https://github.com/potato4d/vue-next-tsx-only-tsc TL;DR Vue 3 にて、render function の h 関数が分離された h 関数の分離に伴い、 API が React のに近いインターフェースとなった この2点によって tsc だけで Vue TSX が動くようになったが、 近いだけで微妙に違う仕様によって実用は難しい 具体的には children のとり方が VNode[] か ...VNode かの違いがある Vue

                                  Vue.js 3 の TSX を TypeScript Compiler だけで動かす方法について
                                • GitHub - GetFirefly/firefly: An alternative BEAM implementation, designed for WebAssembly

                                  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 - GetFirefly/firefly: An alternative BEAM implementation, designed for WebAssembly
                                  • 04.01.2022 - TypeScript/How the compiler compiles

                                    This article is inspired by the talk How the TypeScript compiler compiles◹, you should really check it out for a more in-depth understanding about the TypeScript’s compiling process. At a high level, the TypeScript compiler is a tool to help us analyze and compile the TypeScript code into JavaScript (*.js), as well as some type definition files (*.d.ts) or source maps (*.js.map). If the source fil

                                      04.01.2022 - TypeScript/How the compiler compiles
                                    • 【Vue.js】コンパイラってよく聞くけど一体全体なんなんだ!?!?!?

                                      🚩 初めに こんにちは。Vue Beginners です! 😄 これまでに、Vue の勉強を始める方法や、環境構築の方法などを紹介してきました。 今回はもう少し範囲を絞って、具体的な疑問について解説していきます!!!!! Vue.js について学んでいると、コンパイラ という言葉を見かけることがあると思います。 皆さんは「Vue.js のコンパイラとは何ですか?」と聞かれたら、どのように答えますか? 🤔 意外と戸惑う方も多いのではないでしょうか。 今回はコンパイラとは何なのか、何のためにあるのか、Vue.js のコンパイラとはどういうものなのかについて説明してみます。 それではスタート!!!!!!!!!!! 🤔 コンパイラとは これからの説明は、Vue.js に限った話ではありません。 プログラミング全般で使われる コンパイラ という意味について説明していきます。 コンパイラ (C

                                        【Vue.js】コンパイラってよく聞くけど一体全体なんなんだ!?!?!?
                                      • The path to implementing a programming language

                                        This blog tries to summarize all the choices and paths you could take to implement your next programming language, more specifically the frontend for your language. There are a lot of factors that will influence your choices. Maybe you have your favorite host language that you would like to use for implementing your language, whether your language is dynamically or statically typed, or you are des

                                        • How to speed up the Rust compiler one last time – Nicholas Nethercote

                                          Due to recent changes at Mozilla my time working on the Rust compiler is drawing to a close. I am still at Mozilla, but I will be focusing on Firefox work for the foreseeable future. So I thought I would wrap up my “How to speed up the Rust compiler” series, which started in 2016. Looking back I wrote ten “How to speed up the Rust compiler” posts. How to speed up the Rust compiler.The original pos

                                          • Rust is coming to the Linux kernel

                                            After 31 years, a second programming language will be allowed in Open Source Summit Both Linus Torvalds' Open Source Summit keynote and Jonathan Corbet's "Kernel Report" discussed efforts to allow Rust modules in Linux. The next version of the kernel will be 6.0, but as ever, the change of major version number doesn't denote any major technical changes. Torvalds acknowledged that it might have bee

                                              Rust is coming to the Linux kernel
                                            • 2020年8月26日 Linuxカーネル、約2500の"フォールスルー"をリプレース | 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の"フォールスルー"をリプレース | gihyo.jp
                                              • Let's make a Teeny Tiny compiler, part 1

                                                Let's make a Teeny Tiny compiler, part 1 5/5/2020 This is the first post in a three part series. Check out part 2 and part 3 when you are ready. It is a beautiful day outside, so let's make a compiler. You don't need any knowledge of how compilers work to follow along. We are going to use Python to implement our own programming language, Teeny Tiny, that will compile to C code. It will take about

                                                  Let's make a Teeny Tiny compiler, part 1
                                                • GitHub - buzz-language/buzz: 👨‍🚀 buzz, A small/lightweight statically typed scripting language

                                                  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 - buzz-language/buzz: 👨‍🚀 buzz, A small/lightweight statically typed scripting language
                                                  • MLIRでHello, Tensor|Kai Sasaki

                                                    この記事はTensorFlow Advent Calendar 2020、17日目の記事です。この記事ではLLVMコミュニティが中心となって開発しているMLIRという新しいコンパイラ基盤の基本的な使い方を解説します。 MLIRとはMLIRとはコンパイラ基盤となるオープンソースのソフトウェアでその名はMulti-Level Intermediate Representationの頭文字を取ったものです。もともとはGoogleのTensorFlowチームが開発したソフトウェアでLLVM Foundationに2019年に寄贈されました。 コンパイラ基盤としてはLLVMがよく知られていますが、MLIRはLLVMで得られた知見をより抽象的なレベルで実現し、機械学習アプリケーションに代表されるような複雑な数値計算を様々なハードウェア上に最適な形で実行できるようにします。 例えばコンパイラが真に必要な

                                                      MLIRでHello, Tensor|Kai Sasaki
                                                    • Win32 is the stable Linux userland ABI (and the consequences) - the sporks space

                                                      This post was inspired by some controversy with Valve and their support for Linux, but the bulk of it comes from long-term observation. One of the biggest impacts with the viability of Linux on the desktop was Valve’s Proton, a Wine fork integrated in Steam allowing almost any Windows game to work out of the box. To Linux users, life was good. However, with the recent announcement of the Steam Dec

                                                      • GitHub - tidwall/neco: Concurrency library for C (coroutines)

                                                        Coroutines: starting, sleeping, suspending, resuming, yielding, and joining. Synchronization: channels, generators, mutexes, condition variables, and waitgroups. Support for deadlines and cancelation. Posix friendly interface using file descriptors. Additional APIs for networking, signals, random data, streams, and buffered I/O. Lightweight runtime with a fair and deterministic scheduler. Fast use

                                                          GitHub - tidwall/neco: Concurrency library for C (coroutines)
                                                        • JIT development progress at Ruby 2.7

                                                          TL;DRWe focused to improve Rails application performance in Ruby 2.7 JIT, but the last year's assumption was wrong and Ruby 2.7 JIT didn't meet the goal. We'll change the approach for it in Ruby 3.0. Ruby 2.7 is released!Merry Christmas! The new Ruby is out. As I've sometimes promised to make performance improvements in Ruby 2.7 JIT, let me explain how it went. See also The method JIT compiler for

                                                          • Building a Toy Programming Language in Python

                                                            I thought it would be fun to go outside of my comfort zone of web development topics and write about something completely different and new, something I have never written about before. So today, I'm going to show you how to implement a programming language! The project will parse and execute programs written in a simple language I called my (I know it's a lame name, but hey, it is "my" language).

                                                              Building a Toy Programming Language in Python
                                                            • TypeScript is Surprisingly OK for Compilers

                                                              TypeScript is Surprisingly OK for Compilers Aug 17, 2023 There are two main historical trends when choosing an implementation language for something compiler-shaped. For more language-centric tasks, like a formal specification, or a toy hobby language, OCaml makes most sense. See, for example, plzoo or WebAssembly reference interpreter. For something implementation-centric and production ready, C+

                                                              • CMakeによるビルド(初心者向け) - pyてよn日記

                                                                目次 目次 概要 経緯 基礎的用語とCMakeのまとめ コンパイルとビルド CMakeとは? 実際にCMakeでビルドしてみた 後書き 参考記事 概要 CMakeに関して基礎的なことをまとめ、実際にCMakeにより簡単なプログラムをビルドしてみた。ものすごく初歩的な内容になっている。(筆者自身がものすごく初心者であるため。) 経緯 最近プログラミングの勉強を始めた。C++を書く時のIDE(エディター)としてVSCodeを使っていたが、VSCode上にデバッグ環境をうまく作れなかった。 そこでIDEをJetBrain社のCLionに変えたら、楽々デバッグできるようになった。しかし、CLionはデフォルトで、ビルドにCMakeを利用していて、プロジェクトを作成するとディレクトリに自動で "CMakeほにゃらら" というディレクトリやらファイルが作られる。これがよく分からなくて気持ち悪いので理解

                                                                  CMakeによるビルド(初心者向け) - pyてよn日記
                                                                • GitHub - ezrosent/frawk: an efficient awk-like language

                                                                  Note (2024, ezrosent@) While the policy on bugs and feature requests remains unchanged I've had much less time over the last 1-2 years to devote to bug fixes and feature requests for frawk. Other awks are more actively maintained, and CSV support is now a much more common feature in awk compared to when this project started; I'll update this notice if frawk's status changes. frawk is a small progr

                                                                    GitHub - ezrosent/frawk: an efficient awk-like language
                                                                  • Cより速いRubyコンパイラって実際のところどうなの? - Qiita

                                                                    はじめに 名古屋Ruby会議4に出られた人たちの中には、今作っているRubyコンパイラのmmcはCより速いのが最低条件です とかいうとち狂った発言を聞いた方もいらっしゃるかもしれません。大部分は、華麗にスルーしたことでしょうが、これってどういう意味なんだろう?って思った方もいるのかもしれません。ここでは、私が作っているRubyコンパイラmmcのさわりを説明します。 概要 mmcは 型プロファイリング エスケープ解析 の2つをフルに使うことで効率的なコードを生成することを目指します。現在の所Cに変換しますが、こんなコード絶対手では書きたくないというコードが出てきますので、 Cより速いと名乗っても良いのではないかと思います(もちろんそのコードが速ければですが)。 例えば、フィボナッチ級数はこんな感じのコードになります。 #include <mruby.h> #include <mruby/va

                                                                      Cより速いRubyコンパイラって実際のところどうなの? - 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

                                                                      • 再計算を用いたMN-Core向けコンパイラの最適化 - Preferred Networks Research & Development

                                                                        私がPFNに入ってから知った、もっとも好きな技術トピックの一つである、MN-Core™向け再計算のご紹介をします。再計算(recomputation、rematerializationやcheckpointingなどのキーワードで呼ばれることもあります)は、その名の通り同じ計算を複数回することで、GPUメモリを節約するために再計算を利用するテクニックは広く知られています。PFNでも、再計算を使ったメモリ節約アルゴリズムに取り組み、実際の事業でフル活用しています。 MN-Core向けの再計算は、消費メモリ削減でなく、高速化を主目的としています。再計算で計算する量が増えるにも関わらず、高速化が達成できるというのが、私がとても面白いと思う点です。カラクリを紹介していきます。 MN-Coreは、DRAMとSRAMの二種類のメモリを持ち、使えるリソースをとにかく演算器に費やしているのが特徴のアクセラ

                                                                          再計算を用いたMN-Core向けコンパイラの最適化 - Preferred Networks Research & Development
                                                                        • xorvoid

                                                                          SectorC: A C Compiler in 512 bytes SectorC (github) is a C compiler written in x86-16 assembly that fits within the 512 byte boot sector of an x86 machine. It supports a subset of C that is large enough to write real and interesting programs. It is quite likely the smallest C compiler ever written. In a base64 encoding, it looks like this: 6gUAwAdoADAfaAAgBzH/6DABPfQYdQXoJQHr8+gjAVOJP+gSALDDqluB+9

                                                                          • Engadget | Technology News & Reviews

                                                                            Hands-on with the new iPad Pro M4: Absurdly thin and light, but the screen steals the show

                                                                              Engadget | Technology News & Reviews
                                                                            • 数理・計算科学特論B プログラミング言語処理系の最先端実装技術 第6講 inliningとdevirtualization

                                                                              20230105_TITECH_lecture_ishizaki_public.pdfKazuaki Ishizaki383 views•57 slides

                                                                                数理・計算科学特論B プログラミング言語処理系の最先端実装技術 第6講 inliningとdevirtualization
                                                                              • A Story about FFmpeg on Android. Part I: Compilation.

                                                                                Let’s define a task firstImagine we have to make an app that shows basic info about a video file: container and video codec info and a frame size. Also we would like to actually display a frame from the video. We could show info about audio and subtitles too, but let’s keep focus on video only. How can we solve it with FFmpeg? We have two options: Use already existed Java library that wraps prebui

                                                                                  A Story about FFmpeg on Android. Part I: Compilation.
                                                                                • 【連載】ゼロからはじめるプログラミング言語Rust

                                                                                  マルチパラダイムシステムプログラミング言語「Rust」。メモリセーフで並列処理に対応、さらに高いパフォーマンスを実現する比較的新しいプログラミング言語で、手続き型、オブジェクト指向、関数型といった複数の特徴を備えている。C/C++と同等のパフォーマンスを実現しつつメモリセーフで、コンパイルの段階でさまざまなエラーをチェックすることができる。すでにFirefoxの開発に使われていることから実用さには実績があり、Microsoftも実験的に採用するなど今後の普及が期待される。学びだすにはよいタイミングだ。

                                                                                    【連載】ゼロからはじめるプログラミング言語Rust