clang/llvmをソースからビルドする

LLVM 3.5 がそろそろリリースされそうですが、それを待たずにソースコードからclang/llvmをビルドしてみました。 ビルドの方法は以下に書かれています。 Getting Started with the LLVM System — LLVM 9 documentation 本家のリポジトリはsvnなのですが、git…

クロスDockerのためのDockerfile

dockerhubにはx86, x86_64以外のアーキテクチャ用のコンテナもいくつかpushされています。これをqemuを利用したクロス環境のDockerとして動作させるためには、以下の準備が必要です。(1) binfmt_misc でクロスで動かしたいアーキテクチャのELFファイルの設定…

Aarch64で遊ぶ最も手軽な方法

Aarch64(ARM64)の実機はまだまだ入手は困難ですが、qemuを使ってAarch64のユーザーランドを動かすことは可能です。そしてDockerを利用すると手軽にAarch64の環境を試すことができます。コンパイラも動きます。 準備 Ubuntu 14.04 (x86_64)を使用しています。…

Dockerをソースからビルドしてみた

昨日に続いてDockerの話。Dockerに関しては驚くことばかりです。検索するとほぼ一年前に盛り上がっていたようですね。周回遅れです。DockerはGo言語で書かれていてソースコードがGithubで公開されています。 GitHub - moby/moby: Moby Project - a collabora…

Dockerでダウンロードしたファイルはどこに置かれるのか

昨日に続いてDockerをさわってみた話です。docker run ... で自動的にルートファイルシステムがダウンロードされますが、それらのファイルはいったいどこに置かれたのでしょうか? カレントディレクトリには何も新しいファイルはできていません。ダウンロー…

遅ればせならDockerを試してみた

先日のLinuxCon Japanでも話題になっていたDockerを遅ればせなら試してみた。 拍子抜けするほど簡単だった。誰かが用意してくれたものを使うだけなら。 Ubuntu 14.04 でのDockerのインストール $ sudo apt-get install docker.io これだけ。 busyboxの小さな…

LLVMLinuxをビルドしてみた

LLVMLinuxはLinux kernelをClang/LLVMでビルドできるようにしようというプロジェクトです。先日のELCでも紹介されていました。興味があったので、まずはビルドしてみました。基本的には以下のページの手順に従ってやっただけ。 Useful links | ClangBuiltLin…

「ARM 64bitがやってきた!」を発表してきました

"ARM 64bit has come!" というスライドを作ってテクニカルジャンボリーとカーネル/VM探検隊で発表してきました。ARMv8のaarch64に関する話です。 ARM 64bit has come! from Tetsuyuki Kobayashi テクニカルジャンボリーでのビデオ デモしたときのフォントが…

LinuxCon Japan 2014に参加しました

2014年5月20-22日にホテル椿山荘で開催されたLinuxCon Japan 2014に参加しました。LinuxCon Japan 2014 day 1 #linuxcon - Togetter LinuxCon Japan 2014 day 2 #linuxcon - Togetter LinuxCon Japan 2014 day 3 #linuxcon - Togetter今年はTizenやYoctoのト…

AndroidのARTでは実行中にプロファイリングを行ってそれに基づいて再コンパイルするようだ

DalvikVMのJIT vs ARTのAOT AndroidのDalvikVMではDEXコードをインタプリタで実行しつつ、プロファイリングを行っていて実行頻度の高い部分をJITコンパイルします。コンパイルはメソッドよりも小さな単位で行われ、コンパイルにかかる時間もメモリも小さいの…

Android AOSPの64bit化の現在の状況

2014/05/03(#yapf)横浜Android and モバイルOSプラットフォーム部第35回勉強会での@hidenorly さんの発表Investigation report on 64 bit support in Android Open Source Projectに触発されて、現在(2014/5/10)のAOSPでarm64とx86_64でビルドしてみました。…

Computer History Museumでは一番最初に日本のソロバンがでてきたぞ

シリコンバレーに行ったときには見に行くといいよと複数の人から薦められていた "Computer History Museum" に行ってきました。 Welcome | Computer History Museum 場所はMountain View。Caltrain/路面電車の駅から3kmくらいのところ。駅でタクシーを捕まえ…

ELC(Embedded Linux Conference)2014に行ってきました

2014/4/28 - 5/1 にアメリカのサンノゼで開催されたELC(Embedded Linux Conference)2014に行ってきました。前回のELC2013では発表したのですが今回は聴くだけです。 セッションのスケジュール Embedded Linux Conferenceのスライド Android Builders Summit…

Intel minnow board MAX

アメリカのSan Joneで開催されているEmbedded Linux Conferenceに来ています。そのIntelのブースで先日発表されたminnow board MAXが動いていました。IntelのキーノートスピーチではAndroidの64bit対応がうたわれ、ブースでは動いているものが見られると言っ…

ARM Linuxカーネルの中でNEONのSIMD命令を使用する方法

Linuxカーネルの中ではFPUを使った浮動小数点演算を一切行いません。カーネルのコードの中でFPUにアクセスするのはFPUレジスタの退避、復帰だけです。 NEONのSIMD命令はFPUレジスタを使用します。そのため以前はカーネルの中ではNEONのSIMD命令を使用するこ…

qemuでLinaroのaarch64のルートファイルシステムを動かす

LinaroのダウンロードサイトからOpenEmbeddedベースのaarch64用のルートファイルシステムを入手できます。これをqemuのユーザーモードエミュレーションを使って動かしてみます。 $ wget http://releases.linaro.org/14.04/openembedded/aarch64/linaro-image…

LLVMのバックエンドのaarch64とarm64の違い

Linaroのtoolchainのチームは週報をMLで公開しています。それを見ていたらLLVMのバックエンドのaarch64とarm64の違いについてとても簡潔な説明があったので紹介します。[ACTIVITY] Week 17LLVMのAArch64とARM64の比較のテストをしていると週報を書いたRenato…

Ubuntu 14.04でruby-2.1.1をソースからビルドする

Ubuntu 14.04でruby-2.1.1をソースからビルドして動かしてみようとしたのですが、ちょっと引っかかったことがあったのでここにメモします。本家のサイトからソースアーカイブをダウンロードしてきて、Ubuntu 14.04 (x86_64)でビルドしてみました。 $ tar xf …

Ubuntu 14.04でarm 64bit(aarch64)のコードをコンパイルして動かしてみる

先日リリースされたqemu 2.0でaarch64がサポートされました。これをソースからビルドして試そうと思ったのですが、実はUbuntu 14.04ではすでにqemu 2.0が入っていました。なので、以下のように簡単にセットアップできます。 $ sudo apt-get install qemu-use…

ARM 64bit でLLVMは見逃せない

iPhone5S, iPad Airで64bit ARMプロセッサをいち早く製品化したAppleですが、驚きのニュースがありました。AppleはOS X, iOSのコンパイラツールチェインをgccからclang/LLVMに移行しています。その64bit ARM向けのバックエンドをLLVMのコミュニティに公開し…

AndroidのRenderScriptのソースでLLVMをつかっているところ

きつねさんのLLVM本を読んで、LLVMのIR(中間表現。bitcodeと等価)に最適化をかけたりネイティブコードに変換するのは"Pass"として実装されていて、それらの"Pass"をたばねるのが"Passmanager"だと知りました。 (ちなみにこの本はコンパイラのことをよく知っ…

Android 4.4のARTのソース解析メモ

チラシの裏に書いておく。gitのタグはandroid-4.4_r1 android-4.4_r1.2でもartに関しては差分なし。 バックエンドの選択 compiler-backendはビルド時に選択する。QuickとPortableの2種類。デフォルトではQuick。 Portableを選択する方法はbuild/Android.comm…

Android 4.4 のARTのコンパイルしたコードを見た感想

前回(Android 4.4 のARTのブートログを見てみた - 組み込みの人。)の続きです。取り出したoatファイルをoatdumpコマンドで見てみます。 $ oatdump --oat-file=system@priv-app@Launcher2.apk@classes.dex > Launcher2.dump Launcher2.dumpの先頭の5000行をこ…

Android 4.4 のARTのブートログを見てみた

前回の記事(Android 4.4に入ったARTのソースを見た感想 - 組み込みの人。)ではソースコードを見ただけで、動かしてはいませんでした。 今回はAndroid 4.4のソースコードを自分でビルドしてemulatorを作り、そのブートログを見て気がついたことを書きます。採…

Android 4.4に入ったARTのソースを見た感想

Android 4.4 (Kitkat) のソースコードが公開されました。話によるとDalvikを置き換えるARTというものが開発者向けに使えるようになっているそうです。面白そうなので調べてみました。以下は全て推測と個人の感想です。 ART とは 公式な情報はこれ https://so…

オーストラリアでプリペイドSIMでAndroid端末を使う

シドニー空港のインターナショナルターミナルの中にOptusとVodafoneがあります。今回はTelstraにしました。Telstraは国内線ターミナルの中にあります。シドニーからメルボルンに乗り継いだのですが、ちょうどそのゲートの隣でした。 今回はホテルのWiFiも有…

clang+llvmでさりげなくすごいコードが生成されていた話の補足。

clang+llvmでさりげなくすごいコードが生成されていた話。 - 組み込みの人。で決着のついていなかった部分について。 1からnの総和を求める関数sum() int sum(int x) { int sum = 0; int i; for (i = 1; i <= x; i++) { sum += i; } return sum; } をclang -…

clang+llvmでさりげなくすごいコードが生成されていた話。

先日llvm 3.3がリリースされました。aarch64(arm 64bit)のコードが生成できるようになったということなので、ソースからビルドして遊んでいたのですが、さりげなく凄く最適化されたコードが生成されているのに気がつきました。aarch64だと今は実行して確認で…

LinuxCon Japanで話をしてきました

http://events.linuxfoundation.org/events/linuxcon-japanで話をしてきました。トラブルシューティングでログをたくさん出すと遅くなる。バッファリングするとクラッシュしたときに最後の瞬間のログが見られない。速度を遅くせずになおかつ最後のログを確実…

KVM上にDebianをインストールする

Ubuntu 12.04 LTS(x86_64) のKVMでDebian wheezy i386を動かしてみる インストール ネットインストール用のCDイメージをダウンロード。 $ wget http://cdimage.debian.org/cdimage/release/current/i386/iso-cd/debian-7.0.0-i386-netinst.iso 空のディスク…