lkl.js is Linux Kernel Library ported to JavaScript using Emscripten. Unlike JSLinux, lkl.js includes a Linux kernel fully written in JavaScript and run…
lkl.js is Linux Kernel Library ported to JavaScript using Emscripten. Unlike JSLinux, lkl.js includes a Linux kernel fully written in JavaScript and run…
Linux kernelを直接JavaScript上で動かした. つまり,JSLinuxのようにEmulatorをJavaScriptで作成し, その上でLinuxを動かすのではなく, JavaScriptで書かれたLinuxを生成し,それを動かす,ということである. LKL.js Architecture リポジトリは以下の通り. https://github.com/retrage/linux/tree/retrage/em-v2 なお lkl.js Demo にデモを用意した. SharedArrayBufferを有効にして試してみてほしい. Linux Kernel Library (LKL) ここでは,Linux kernelをLibrary OSの形態の1つであるAnykernelにする Linux Kernel Library (LKL)を利用する. LKLはLinux ke
最近Linuxでいろいろと大活躍のBPF (Berkeley Packet Filter)には主に2種類あって,一番最初に提唱されlibpcapなどで利用されるcBPF (classic BPF)と,主にLinux内で現在利用されている,cBPFをベースに拡張したeBPF (extended BPF)があります. cBPFのプログラムはlibpcapを使ってtcpdumpなどで使われるフィルタ式からコンパイルすることが可能です.一方eBPFはllvmのバックエンドでサポートされているためclangを使ってC言語からコンパイルすることが可能です. Linuxはカーネル内にcBPFプログラムをeBPFプログラムに変換する機構を持っていて,cBPFプログラムを使う場合は内部的にeBPFに変換されて実行されています. これによりlibpcapでコンパイルしたcBPFプログラムはLinux内で使うこ
はじめに ランダム Cプログラムジェネレータ Csmithの紹介. http://embed.cs.utah.edu/csmith/ コンパイラのテストでランダムテストは効果的であるというのが 昔から言われていまして、いくつかその手のものがあるのですが、 Csmithは GCCや llvm-clangで多くのバグを見つけたというのが 紹介されていたので気になってました。 論文は結構前から読めたのですが、ソースが公開されたのは 最近なのでインストールして使ってみました。そのときのメモ。 ビルド あんまり詳細なことが書かれていないのでよくわかってないですが、 C++コンパイラがあればビルドできると思います。 Ubuntu 10.10(x64) g++ 4.4.5で確認しました. % wget http://embed.cs.utah.edu/csmith/csmith-2.0.0.tar.gz
This article describes installing latest clang (llvm) on Ubuntu 16.04 (Xenial), which is also the default distro for Windows Subsystem for Linux (WSL). Ubuntu 16.04 ships with relatively old clang. Running sudo apt-get install clang installs version 3.8. To install latest version (currently 6.0) run: wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - sudo apt-add-repository
TL;DR: ソフトウェアの多くは外部からの入力に依存する実行パス(trigger-based code)をもつ. これを記号的実行(symbolic execution, シンボリック実行)などの解析手法から隠蔽する手法として,コラッツの問題を用いた線型難読化(linear obfuscation)がある[1]. 本稿ではしかし,線型難読化されたコードはコンパイラ最適化によってある程度除去できることを示す. コラッツの問題 コラッツの問題は数論の未解決問題のひとつである. 任意の1でない自然数nに対して,nが偶数ならば2で割り,nが奇数ならば3倍して1を足す.この操作を繰り返していくと,どのような自然数nから出発しても,有限回の操作のうちに必ず1に到達する. この定理は経験則的に正しいと考えられているが,いまだ証明はなされていない. 線型難読化 たとえば次のプログラムtr.cは外部からの
iOS9からのアプリ最適化の仕組みAppThinningのため、Xcode7 betaからはアプリへのbitcodeの埋め込みがデフォルトで有効になりました。 https://developer.apple.com/library/prerelease/ios/documentation/IDEs/Conceptual/AppDistributionGuide/AppThinning/AppThinning.html http://qiita.com/usagimaru/items/cb19f283db4ac0cd8bd6 bitcodeとは何かを感じ取るためのエントリです。 続き Xcode7でのembed-bitcodeオプション http://qiita.com/gamako/items/4ebfd048c5aed4f68595 bitcodeとは LLVMのビルドフローは、ざっくり
はじめに LLVMは、コンパイラを作成するための基盤です。2000年にChris Lattnerによって作成され、2003年にリリースされました。それ以来、LLVMリンカ lld やLLVMデバッガ lldb など幅広いツール群を持つ包括的なプロジェクトに発展してきました。 LLVMの秀でた特徴は、一般に LLVM IR と呼ばれる、その中間表現です。LLVMの考え方は、まずこのIRにコンパイルし、次にそのIRを、JITコンパイルする、インタープリタで実行する、または実行しているマシンのネイティブアセンブリにコンパイルするといういうものです。このIRの主なターゲットは、コンパイラです。実際LLVMを使用するコンパイラは、世の中に数多くあります。C言語とC++用はそれぞれclangとclang++、D言語用の ldc2 、Rust、Swiftなどです。 Emscripten のようなプロジェ
(注:2017/07/06、いただいたフィードバックを元に翻訳を修正いたしました。) この記事は、 LLVM コンパイラ基盤を使ってリサーチをする人のための入門書です。これを読めば、コンパイラに全く興味のない大学院生も、楽しみながらLLVMを使って優れた功績をあげられるようになるでしょう。 LLVMとは何か? LLVMは非常に優れていて、ハックしやすく、C言語やC++のような”ネイティブ”言語向けの、時代の先端を行くコンパイラです。 LLVMの素晴らしさに関しては他にも様々な話を聞くのではないでしょうか(JITコンパイラとしても使えるとか、C言語系列以外の様々な言語を強化できるとか、 App Storeからの新しい配信形態 であるとか、などなど)。もちろん全部本当のことですが、今回の記事の目的としては、上述の定義が重要です。 LLVMが他のコンパイラと差別化される理由には、いくつかの大きな
最近の投稿 問題: 積み木を10個積み上げるのにかかる時間は 2020/8/20 木曜日 Google の G Suit Team から “[Action Required] Remove internal links to the G Suite Domain Contact page for your organization” ていうメールが来た 2020/8/14 金曜日 NZXT H1 と ROG STRIX B550-I GAMING で組んでみた 2020/7/17 金曜日 花粉症対策2019 2019/3/16 土曜日 マルチディスプレイ時のDisplayPort問題を何とかしてみた 2019/1/12 土曜日 REALFORCEソフトウェアがインストールできない(解決済) 2018/12/6 木曜日 GeForce RTX 2080 Founders Edition を買
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く