8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

x64 レジスタ

Last updated at Posted at 2019-12-13

x64 レジスタ

x64 には64ビットの汎用レジスタが16個あります。
それぞれ64ビット(8バイト)、32ビット(4バイト)、16ビット(2バイト)、8ビット(1バイト)のレジスタとして使用することができます。

RAX、RBX、RCX、RDX、RSI、RDI、RBP、RSP は16bit CPUである 8086の時代から存在するレジスタの64bit拡張版8個です。

64 ビット 32 ビット 16 ビット 8 ビット
RAX EAX AX AH, AL
RBX EBX BX BH, BL
RCX ECX CX CH, CL
RDX EDX DX DH, DL
RSI ESI SI
RDI EDI DI
RBP EBP BP
RIP EIP IP
RSP ESP SP

64ビットモードで追加された汎用レジスタが8個(R8、R9、R10、R11、R12、R13、R14、R15)あります。

フラグレジスタ RFLAGS

ID : Identification フラグ
VIP : バーチャル割り込み保留
VIF : バーチャル割り込み
AC : アラインメントチェック
VM : 仮想86モード
RF : Resume フラグ
NT : Nested Task
IOPL : I/O 特権レベルフィールド
OF : オーバーフローフラグ。 算術演算の結果が2の補数で表せない大きさの場合にセットされます。
DF : 方向フラグ。ストリング命令 (MOVS, CMPS, SCAS, LODS, STOS)の自動インクリメント(set)とデクリメント(clear)を指定して文字列操作の方向を決めます。
IF : 割り込み許可フラグ
TF : トラップフラグ。デバッグ用のシングルステップモードに移行する。
SF : 符号フラグ。演算結果の最上位ビットと同じにセットされます。2の補数の正負を表します。
ZF : ゼロフラグ。演算結果がゼロのときにセットされます。
AF : ビット3からのキャリーやボローが発生した場合にセットされます。
PF : パリティフラグ。演算結果の下位8ビットのパリティを示します。下位8ビットの1の数が偶数なら1、奇数なら0になります。
CF : キャリーフラグ。このビットは算術演算、シフト、ローテイト命令で最上位ビットまたは最下位ビットから桁あふれが発生した場合にセットされます。

div arg

この命令は、レジスターの内容を「arg」で除算する。

除数のサイズ 1 バイト 2 バイト 4 バイト
被除数 AX DX:AX EDX:EAX
剰余の格納先 AH DX EDX
商の格納先 AL AX EAX

#syscall

.code64
.text
.global main
main:
    mov    $msg, %rsi
    mov    $1, %rdi
    mov    $6, %rdx
    mov    $1, %rax
    syscall
    ret
.data
msg:
    .ascii  "hello "

以上。

8
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?