タグ

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

  • Assembly Programming on ARM Linux(02)

    2. ARMのレジスタ ARM CPUの命令セットを見ていく前に、ARMのレジスタを見ておきましょう。Linuxで プログラミングする場合に必要なユーザモードから見えるレジスタに限定します。 汎用レジスタ ARMプロセッサは r0 から r15 の16の32ビットレジスタを持っています。 そのうち r15 はプログラムカウンタで実行中のメモリアドレスを保持しています。 r14 はリンクレジスタで BL 命令(サブルーチンコール)で分岐した場合の戻りアドレス を保持します。リンクレジスタは1つの戻りアドレスしか保持できないため、 スタック (普通は r13 が示す領域) に保存する場合が多くなります。 その他の14のレジスタは汎用レジスタとして同じ機能を持っています。 レジスタ

  • Assembly Programming on x86-64 Linux (04)

    レジスタ x86-64 には64ビットの汎用レジスタが16あります。それぞれ64ビット(8バイト)、32ビット(4バイト)、16ビット(2バイト)、8ビット(1バイト)のレジスタとして使用することができます。RAX、RBX、RCX、RDXの4は8ビットのレジスタ2つとして独立にアクセスできます。32ビットレジスタとして書き込まれた場合に上位32ビットは0が書き込まれることに注意してください。16ビット、8ビットレジスタとして書き込まれた場合は上位のビットは変化しません。 汎用レジスタには整数またはメモリアドレスを格納することができます。 RAX、RBX、RCX、RDX、RSI、RDI、RBP、RSP は16bit CPUである 8086の時代(1978年?)から存在するレジスタの64bit拡張版です。したがって汎用レジスタといっても昔の役割が少し残っていて、一部の命令で特殊な役割があり

  • 1