2014年5月7日 (水曜日)

09:09:11 # Life thumb と arm assembly のプロファイルを raspberry pi でとった。 brainfuck interpreter に100000回くらいループしてもらってperf record でトレースをとって、perf report で確認。 UIで選択していったらどのアセンブリ命令にいるときに割り込みが起きたのかがわかっておもしろい。 アセンブリソースで記述したラベル(hoge:)が関数名として見えているのでどっかのレベルでデバッグ情報がはかれているのかな。まだ把握してない。 thumb と arm でナイーブに実装しただけでは実行時パフォーマンスに差がない。単純にarm のほうがコードサイズが倍になるのでこの場合はthumbのほうがよいということになるのかも。 あとプロファイル見てる限りだとループの境界チェックで定数のロードでメモリアクセスにいくところが遅いのでそこをレジスタに割りつけたら20%高速化した。 命令がどうとかよりメモリアクセスを減らすのが重要っぽい。 たとえば、cmpだと引き算しているのでもったいないなぁとteqでxorにしてみても特に高速化とかしてない気配。 aarch64は手元に実機がないのでプロファイルをとるたのしみがない。

17:37:44 # Life qemu-debootstrap というスクリプト. Debian の qemu-user-static パッケージには qemu-debootstrapと いうスクリプトがあって、debootstrapしてqemuをコピーして debootstrap --second-stage を実行してという手続きをやってくれ る模様。あとはDebianのアーキテクチャ名からqemu のアーキテクチャ 名のマッピングもやってくれる。 qemu-debootstrap --arch=[アーキテクチャ] sid [ディレクトリ名] http://ftp.jp.debian.org/debian

$ for A in mips mipsel powerpc armel; do 
  sudo qemu-debootstrap --arch=$A sid $A http://ftp.jp.debian.org/debian ; 
done
$ for A in *; do sudo chroot $A echo "hello world $A"; done
hello world armel
hello world mips
hello world mipsel
hello world powerpc
	

debian-portsからブートストラップできるアーキテクチャもいくつかあって、sh4とsparc64は十分うごくみたい。

for A in sh4 sparc64; do 
  sudo qemu-debootstrap  --foreign --no-check-gpg  --arch=$A sid $A http://ftp.debian-ports.org/debian ; 
done

	
Junichi Uekawa

$Id: dancer-diary.el,v 1.94 2009/10/21 14:02:48 dancer Exp $