(壊れた音声ファイルを配信してしまったので、修正したファイルで同じエピソードを再配信しています。ごめんね。教えてくれた皆さんありがとうございました。) GPGPU ワナビーの森田が C++ 拡張の GPGPU 標準を眺めました。ご意見感想などは Reddit やおたより投書箱にお寄せください。iTunes のレビューや星もよろしくね。 SYCL Overview – The Khronos Group Inc SYCL.tech – Find out the latest SYCL news, videos, learning materials and projects. GitHub – Tohoku-University-Takizawa-Lab/neoSYCL: A SYCL Implementation for CPU and SX-Aurora TSUBASA DPC++ Do
Building a static analyzer into the C compiler offers several advantages over having a separate tool, because the analyzer can track what the compiler and assembler are doing intimately. As a Red Hat employee, I work on GCC, the GNU Compiler Collection. Our static analyzer is still experimental but is making big strides in interesting areas, including a taint mode and an understanding of assembly-
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
It seems that GCC and LLVM-Clang are using handwritten recursive descent parsers, and not machine generated, Bison-Flex based, bottom up parsing. Could someone here please confirm that this is the case? And if so, why do mainstream compiler frameworks use handwritten parsers? Update : interesting blog on this topic here
Quartzという言語をデザインしてコンパイラを書いて自身をコンパイルできるところまで到達したので記録として書く (人に使ってもらうことなどは特に想定してないので、ドキュメントなどはありません) Quartzについて 言語機能的にはGoとかに近く、syntax的にはRustに近い言語としてデザインした。ターゲットとしてWASM(wat形式)のみサポート。 元々の想定として、ゲームのスクリプトやアプリケーションのプラグインなど、動的に読み込めて気軽にかけて、型やLSPなどの現代的なDXは提供したいというモチベで作り始めた。 例えばfizzbuzzのコードは以下のような感じ。 fun main() { for i in 1..100 { if i % 15 == 0 { println("FizzBuzz"); } else if i % 3 == 0 { println("Fizz"); }
Continuation based Cとは 以下、長いので略称のCbCと書きます。 状態遷移記述に向いたプログラミング言語 CbC の開発 C 言語における関数呼び出しやfor 文・while 文を排除し,状態遷移単位(code) での処理を記述できる言語の開発をしてます. https://ie.u-ryukyu.ac.jp/%E5%AD%A6%E7%A7%91%E7%B4%B9%E4%BB%8B/%E7%A0%94%E7%A9%B6%E5%AE%A4%E7%B4%B9%E4%BB%8B/%E4%B8%A6%E5%88%97%E7%A0%94%E7%A9%B6%E5%AE%A4%EF%BC%88%E6%B2%B3%E9%87%8E%E7%A0%94%EF%BC%89/ 詳しくはこの辺の論文を読むとよさそう http://www.ie.u-ryukyu.ac.jp/~kono/papers
News (Oct 27, 2004) TCCBOOT is slashdotted. Introduction TCCBOOT is a boot loader able to compile and boot a Linux kernel directly from its source code. TCCBOOT is only 138 KB big (uncompressed code) and it can compile and run a typical Linux kernel in less than 15 seconds on a 2.4 GHz Pentium 4. TCCBOOT is based on the TinyCC compiler, assembler and linker. TinyCC is an experiment to produce a ve
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
最近秋月電子で取り扱いが開始されたマイコン CH559L、安い 8 ビットマイコンですが、USB ホストになれるという特徴があります。 このマイコンを使って、USB キーボードの入力を ASCII テキストに変換してくれる便利モジュール「かんたん USB ホスト」を開発したので、その過程と、その過程でわかったことをまとめてみます。 最初に評価ボードを手に入れたのが 2020年5月で、それから 1 年以上いろいろいじったのでそれなりに知見がたまりました。それらを一通りまとめてみたので、なかなか大盛な記事になってしまいましたが、これから CH559 をいじってみたい、という方にも参考になれれば幸いです。 CH559って? 南京沁恒微电子(Nanjing Qinheng Microelectronics、以下 WCH)から出ているマイコンチップです。WCH は USB トランシーバー入りの 8
Rustコードのコンパイルが遅いことは誰でも知っています。しかし筆者は、世の中のほとんどのRustコードはコンパイルをもっと速くできると強く感じています。 例えば、つい最近の記事にこのように書かれていました。 一方、Rustでは、プロジェクトやCIサーバーの性能にもよりますが、 CIパイプラインの実行に15~45分かかります。 これは筆者には理解できません。GitHub Actions上にあるrust-analyzerのCIの所要時間は8分です。しかも、これは100万行の依存関係に加え、20万行の独自コードが記述されたとても大規模で複雑なプロジェクトでの話です。 確かに、Rustは根本的な部分で非常にコンパイルが遅いのは間違いありません。Rustはジェネリクスのジレンマにおいて「遅いコンパイラ」を選び、全体的な設計思想としてコンパイル時間よりもランタイムを優先しています(この点に関する優れ
本書では関数型言語をはじめとして多くの言語にあるパターンマッチをコンパイルする方法を紹介します。パターンマッチはシンプルに条件分岐の連鎖にコンパイルすることもできますが、よく研究された手法を使えば驚くほど効率的なコードを生成できるようになります。そのような手法を2種類紹介します。 パターンマッチはデータ型に照合しそのデータを取り出すものです。例えばRustであれば match opt { Some(x) => f(x), None => g()} のように Option 型への照合などに使えます。本書の前半ではパターンマッチの挙動や使い方などを学びます。挙動の確認にはプログラミング言語Standard MLを使い、一部Cのコードも使います。その後Common LispやJavaなどの他の言語でのパターンマッチの状況を確認します。後半ではパターンマッチのコンパイル技法について紹介します。パタ
Minimal, yet flexible The syntax and semantics of Stabel uses reverse polish notation, meaning the function name comes after its arguments. This frees the syntax of many control characters while the semantics consist of a few, but powerful, rules. def: main : 2 increment def: increment : 1 + Code in Stabel consists of whitespace-separated functions which are called in a left-to-right fashion. The
逐次拡張型インタラクティブ開発環境を作成しました。iMops (アイ・モップス)という名前です。無料ソフトウェアです。 ここからダウンロードできます。現在のバージョンは2.23です(2022/2/5)。 Macintoshコンピュータ(MacOS[X])専用ですが、相当程度最適化されたx86-64マシンコードを生成します。インタラクティブに一語一語(=各関数毎に)コンパイル-解釈実行できます。JITコンパイラとかいうものになるのでしょうか。Cocoaなど一般の動的フレームワークにリンクできます。単独で起動可能なアプリケーションを作ることもできます。64ビットのみですが動的ライブラリも生成できます。最新のmacOS上でも稼働するようです(確認済)。(なお、Apple社が、Macの全CPUを二年でARM仕様に変更すると宣言したことに対応して、ARM64ビットネイティブのMopsの開発計画が進行
Haskellのパーサコンビネータmegaparsecと、コンパイラ基盤であるLLVMを使って、コンパイラを作ってみます。モチベーションとしてはコンパイラはC/C++を使って作るのが定番ですが、型の恩恵を受けながら開発したいなあということでHaskellでも作れないか調べてみました。 コンパイラ作成の流れ パーサコンビネータのMegaparsecで四則演算のパーサを作成します。 LLVM IR構築のライブラリであるllvm-hs-pureでLLVM IRのコードへ変換するコンパイラを作成します。 簡単な式をコンパイルしてLLVMのインタープリタlliで実行します。 LLVMのコンパイラllcでアセンブラを生成してgccでバイナリまで生成します。 環境 あらかじめ以下をインストールしておいてください。 stack 1.9.3 Haskell 8.6.5 LLVM 9.0.0 コマンドラインで
インテルのoneAPIのニュースとかは見ている方も多いかと思いますが、この流れで一番大きなインパクトは今まで高嶺の花だったIntel compilerが2021年になってから実質的に無料になってしまったということです。こうでもしないとNVIDIA1には対抗できないってことなんでしょうけど、このディープラーニングの思わぬ副産物に対して従来型HPCユーザーも恩恵にあずからずにいるわけにはいかないでしょう。 とりあえずCentOS8へのyum (dnf)を使ったインストールはとても簡単だったので、手順を紹介することにします。とりあえず本家のガイドはこちらから。やるのはyumのリポジトリを作ってinstallコマンドを打つだけです(root権限で行います)。 yumでBase kitを入れる /etc/yum.repos.d/oneAPI.repoを以下の内容で作ります [oneAPI] name
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く