タグ

ブックマーク / www.mztn.org (2)

  • Assembly Programming on ARM Linux(00)

    はじめに PC Linux (i386 CPU) の Linuxでアセンブリプログラミングと同じように、 玄箱PRO やシャープのSLシリーズを使ったアセンブリプログラミングを解説します。 アセンブラは GNU binutils に入っている GNU as を使います。 binutilsのipkパッケージを用意しました。 Sharp Linux Zaurus には、ARM系のCPUであるインテル製の Intel(R) XScale(TM) を使用しています。 玄箱PRO にも Orion 88F5182 というARM系のCPUが使われています。Raspberry Piにも Broadcom BCM2835(ARM1176JZFS) というARM系のCPUが使われています。Linux Zaurus用にアセンブラで書いたプログラムは玄箱PROでも動作します。たとえば rvtl_arm はフレー

  • Assembly Programming on ARM Linux(06)

    6. システムコールとその他の命令 これまで演算命令、分岐命令、 ロード/ストア命令、複数レジスタのロード/ストア命令を見てきましたが、 今回はそれ以外の命令の概要です。まず、非常に重要な Linuxのシステムコールを呼び出すために使用する SVC命令(SWI から名前が変更されました)から始めましょう。 ソフトウェア割り込み命令 ソフトウェア割り込み命令は、Linux ではカーネルのシステムコールの呼び出しに使用されます。 SVC が実行されるとスーパーバイザモード(カーネルモード)に移行し、CPSR は SPSR_svc に待避され、 プログラムカウンタ(PC) に メモリアドレス 0x00000008 に保存されたSVC 例外ベクタ (例外処理ルーチンの先頭アドレス) がロードされます。 「SVC命令を実行するとカーネルのシステムコール処理ルーチンに制御が渡る」と覚えておきましょう。

  • 1