2014年5月6日 (火曜日)

19:18:18 # Life brainfuck interpreter in A64/aarch64/arm64を書いた。 手元にマシンがないのでqemu-user-staticパッケージに2.0からはいったaarch64 エミュレータを利用。 chroot の作成方法についてはDebian wiki の Arm64Portに詳しい。 まだdebian-portsに必要なパッケージが全部入ってはいないので試行錯誤が必要かも。apt だけで依存関係が解決できない場合があるのでときどきdpkgを使ってみた。 32bit 命令セットなんだけど conditionalを指定出来なくしたため、thumb 命令 + レジスタを32種類用意するようになった、という雰囲気。 .arch armv8-a。 レジスタ名がドキュメント的にはr0とかなんだけど実際にはそれではダメで、x0かw0なのか指定しないとだめっぽい。 push/pop命令がなくなっていて、2つづつレジスタを書き込んでspの増減をしてくれる stp/ldp 命令が追加されている。 bx命令がなくなっていてthumb/arm の切り替えがない、どうも32-bit と 64-bit はスーパバイザ経由でないと切り替えられないよう。 レジスタセットが違うのでまぁ妥当な感じかも。普通のアーキテクチャね。 スタックは常に16バイトバウンダリにないといけなくて2つづつレジスタをスタックにかかないといけないのがちょっと不条理。 ABI は IHI0055B_aapcs64.pdf が公開されているのでそれを読んで把握。 ARM ARMは登録しないと読めないのとaarch64 の命令セットのよいドキュメントがない・・・。 通信用語が異様に詳しい。なぜ?

Junichi Uekawa

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